我想将整个全局状态传递给redux connect'mapStateToProps'函数
在我的组件内部,我只能访问现在是全局状态的状态。
这有什么问题吗?
我不想将状态切成很多块并将其切成每个组件,而只是给出整个全局状态。
这是否存在任何性能问题?我知道它可以重新渲染整个组件,但是用react的diffing算法,我想应该没问题。
使用'this.props.count
'不像'this.props.todoSection.count
那样具有启发性。只是易读性。
我读到React 1.6中的“时间切片api”可能会改善与维护全局状态有关的各种性能问题。
答案 0 :(得分:3)
从技术上讲是可行的,但是更好的做法是在每个使用全局状态的组件中创建mapToStateProps
。并在其中映射唯一需要的道具。
答案 1 :(得分:2)
然后呢?每当状态发生任何变化时,无论它是否与您的组件相关,或者组件是否会重新呈现?
您为什么要这样的东西? (很好奇)
答案 2 :(得分:1)
听起来像您不想想要映射整个全局状态,只是想映射相关的化简器。因此,您当然可以可以映射那家商店:
const mapStateToProps = ({ todoStore }) => ({ todoStore });
这比映射整个商店的成本要低得多,但是如果商店足够大(和/或最终用户的浏览器不够灵活),则大规模地开始会在整个应用程序中引起性能问题。充其量是反模式。
使用
this.props.count
并不像进行this.props.todoStore.count
那样具有启发性。只是可读性。
您可以始终使用名称空间,同时仍然仅映射所需的数据:
const mapStateToProps = ({ todoStore: { count, foo } }) => ({ todoStore: { count, foo } });
这将为您提供所需的形状,而仅连接所需的状态。但是,伴随着重复属性名称的开发人员付出了微不足道的代价-而且仍然需要定义要映射的状态-可能会违背目的。