大型物体的减速器/状态组织

时间:2016-12-26 14:40:17

标签: reactjs react-native redux react-redux

我有一个本机应用程序,它使用许多屏幕来管理大型对象中的数据。

例如,以下每个屏幕都是管理此应用中1个对象的一部分的屏幕:地址,联系人,图片,备注等等。

是否有任何与最佳做法或性能相冲突的问题,使用单个reducer传回状态中的整个对象?

或者我的简化和状态是否应该更加面向屏幕,只返回每个屏幕正在处理的对象的属性?

1 个答案:

答案 0 :(得分:2)

直接回答。 取决于

取决于每个reducer存储的数据(由每个人维护的状态)

如果复杂数据更好,则创建单独的reducer

如果每个屏幕的状态只是一个扁平的JSON对象,请将所有这些状态保持为单reducer

最后combineReducers()将通过connect()的简单redux方法在我们想要的任何地方为我们提供所有这些内容。

通常我们会为reducer保留container,其中容器包含由此容器的reducer水合的组件。

即使我们为每个component维护一个'减速器',也不是问题。

另一个好的做法是让相关的状态说:

cart => cartReducer反过来接受cart ADD_TO_CART状态的所有操作,例如RESET_CARTCHECKOUT_CARTDELETE_ITEMreducer等。

在您的情况下,如果地址,联系人,图片等与单个实体相关,则最好维持单个ModelState.Clear();