首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >redux todomvc:无法理解“`mapStateToProps`”

redux todomvc:无法理解“`mapStateToProps`”
EN

Stack Overflow用户
提问于 2016-11-15 01:26:56
回答 2查看 122关注 0票数 0

看看余度,还被connectmapStateToProps弄糊涂了。

todomvc/src/containers/App.js中的部分代码是:

代码语言:javascript
复制
const mapStateToProps = state => ({
  todos: state.todos
})

state是Redux商店的状态。但我感到困惑的是,state有一个todos属性,它是一个数组。todos是减速器,是函数这里这里。在阅读了mapStateToProps之后,仍然无法理解https://github.com/reactjs/react-redux/blob/master/docs/api.md在这里做什么。

欢迎任何评论。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-15 02:00:21

使用redux,您的应用程序状态在一个对象中一起存在,称为state。当您创建一个新的还原器时,您需要将它包含在combineReducers助手中。您可以在这个文件中看到这种情况。您为每个减速机使用的键的名称实际上在状态中是相同的名称。在这种情况下就是待办事项。如果您为用户创建了一个新的还原器,并将其包含在combineReducers助手中作为users,那么它将作为state.users提供。

票数 0
EN

Stack Overflow用户

发布于 2016-11-15 02:01:40

我试试看。我希望我足够简洁。

正如您正确地看到的,"state“被传递到"mapStateToProps”。这是一个包含减速机的对象--每个减速机的“存储”或“状态”。

例如,如果您发布的第二个示例如下所示。

代码语言:javascript
复制
import { combineReducers } from 'redux'
import todos from './todos'
import products from './products'

const rootReducer = combineReducers({
  todos,
  products
})

export default rootReducer

您现在有了“产品”状态。因此,传递给mapStateToProps的“state”对象如下所示

代码语言:javascript
复制
state = {
  todos,
  products
}

因为"combineReducers“函数”结合了所有的还原器,基本上在“状态/存储”(主要的应用程序存储)下创建键。记住,redux为您的全球状态创建了一个真理来源的概念。因此,通过combingReducers,我们将这些新的状态对象放置在您的“全局状态”中,作为键.那就是如果你有一个以上的减速器。通常情况下,你只会有一个。很多时候,你可能不想要“你的全部状态”,也许只是一小部分。

那么,你的组件,让我们说,我们做到了。

代码语言:javascript
复制
const mapStateToProps = state => ({
  todos: state.todos,
  products: state.products
})

您的组件现在可以访问以下内容:

代码语言:javascript
复制
this.props.todos
this.props.products

mapStateToProps所做的就是通过将这些值映射到组件来方便地访问组件上的“全局”存储/状态。基本上,它吞食你的组件,添加道具,然后吐出来修改后..用你的新价值观。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40600598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档