2017-08-25 65 views
3

这可能是一个天真的问题,但我是新来的react-redux,我正在学习。React-Redux mapStateToProps vs向下传递父项道具

上下文:鉴于我有一个react-redux应用程序。在我顶级组件我有这个底部:

function mapStateToProps({ auth }) { 
    return { auth }; 
} 

export default connect(mapStateToProps)(newComponent); 

的“身份验证”部分来自于我减速index.js文件:

import { combineReducers } from "redux"; 
import authReducer from "./authReducer"; 

export default combineReducers({ 
    auth: authReducer 
}); 

所以现在这个组件有访问auth附带的所有数据,这些数据在我的应用程序中包含所有需要的用户信息。

我的应用程序变得越来越大,我意识到我需要从authReducer数据中是由顶级部件1或2层下来的其他组件

我的问题(S)是:它是更好练习将顶级组件连接到身份验证缩减器,并将必要的信息传递给子组件?如果一个孩子需要100层的信息需要authReducer的信息,我们是否还会一层一层传递下去?

或者我们只需将authReducer连接到每个需要它的组件即可?这样做反复花费多少钱?

回答

6

本文档涉及有关此主题的最佳做法:link。相关部分:

当前建议最好的做法是,只要它使感进行分类的部件 为“表象”或“容器”的部件,并提取一个连接 容器组件:

强调“一个容器组件在最上面“在Redux示例中是 一个错误。不要把这当成一句格言。尽量保持您的演示文稿 组件分开。方便时通过连接 创建容器组件。只要你觉得你在父组件中复制代码 以提供相同种类的孩子的数据,则需要时间 来提取容器。一般情况下,只要你觉得父母知道 太多关于“个人”数据或其子女的行为,时间到 提取一个容器。

实际上,基准测试表明,更多的连接组件 通常会导致比连接组件少的更好的性能。

一般来说,尽量在可理解的数据流和组件的责任区域之间找到一个平衡点。

+0

没问题菲利普,很高兴帮助:) –