我会试试看。我希望我足够简洁。
正如你所看到的,“状态”被传递给“mapStateToProps”。这是一个包含你的减速器的对象 - 每个减速器的“存储”或“状态”。
例如,如果您发布的第二个示例看起来像这样。
import { combineReducers } from 'redux'
import todos from './todos'
import products from './products'
const rootReducer = combineReducers({
todos,
products
})
export default rootReducer
您现在拥有“产品”状态。所以传递到mapStateToProps你的“状态”对象,看起来像这样
state = {
todos,
products
}
因为“combineReducers”职能“合并”所有的减速,基本上“国家/专卖店”下创建键 - 主要的应用程序商店。请记住,redux为您的全球状态创造了一个真理来源的想法。所以,通过combingReducers,我们把这些新的状态对象放在你的“全局状态”中,作为键......也就是说如果你有多个reducer。多数情况下,你只有一个。很多时候,你可能不想要“你所有的状态”,也许只是一个片段。
所以,你的组件,让我们说,我们做到了这一点。
const mapStateToProps = state => ({
todos: state.todos,
products: state.products
})
您的组件现在可以访问以下内容:
this.props.todos
this.props.products
所有mapStateToProps所做的是让你方便访问此“全局”存储/状态到您的组件通过将这些值映射到你的组件。基本上,它吞噬你的组件,添加道具,然后吐出来改变......用你的新价值。
state.todos(Array)是reducer函数的输出。 'todos'是以'combineReducers'里面的键名命名的?我对吗?谢谢 – BAE
是的,你明白了 –