【问题标题】:Reducer/state organization for large objects大型对象的减速器/状态组织
【发布时间】:2016-12-26 14:40:17
【问题描述】:
我有一个 react native 应用程序,它使用许多屏幕来管理大型对象中的数据。
例如,以下每一项都是用于管理此应用中 1 个对象的一部分的屏幕:地址、联系人、图像、便笺等。
如果使用单个 reducer 将整个对象传回状态,是否存在与最佳实践或性能相冲突的问题?
或者我的 reduce 和 state 应该更面向屏幕,只传回每个屏幕正在处理的对象的属性?
【问题讨论】:
标签:
reactjs
react-native
redux
react-redux
【解决方案1】:
直截了当的回答。 视情况而定
取决于每个reducer存储的数据。(每个人维护的状态)
如果是复杂数据,最好创建一个单独的reducer。
如果每个屏幕的状态只是一个平面 JSON 对象,请将它们全部保存在单个 reducer 中。
最后combineReducers() 将通过redux 的简单connect() 方法在我们想要的任何地方为我们提供所有这些。
一般来说,我们会为container 维护一个reducer,其中容器包含由该容器的reducer 水合的成分。
即使我们为每个 component 维护一个“reducer”也不是问题。
另外一个好的做法是保持相关状态说:
cart => cartReducer 反过来接受cart 状态的所有操作,如ADD_TO_CART、RESET_CART、CHECKOUT_CART、DELETE_ITEM 等。
在您的情况下,如果地址、联系人、图像等与单个实体相关,最好维护一个 reducer。