我有一个React-Redux应用程序,其中有多个选项卡,并且我的代码保存在每个选项卡的文件夹结构中。每个文件夹都包含一个动作文件,服务文件,常量文件和一个reducer文件。
当我从服务器获取数据时,我将其作为一个大的嵌套对象获取,其顶级密钥为sectionA,sectionB,sectionC等。
每个选项卡可以使用来自多个部分的数据,例如,选项卡1可以使用sectionA和sectionB,选项卡2可以使用sectionB和sectionC,依此类推。
这在我将数据拆分为精简器的方式中产生了一个问题。如果redux存储中的顶级键将是“ tab1”和“ tab2”,而我想更新sectionB中的数据,那么我将不得不在两个不同的reducer中进行操作。另一方面,如果顶级键是“ sectionA”,“ sectionB”等,那么我的文件夹结构是错误的。有什么办法解决这个问题?
谢谢。
答案 0 :(得分:1)
听起来您就像在像前端开发人员一样思考,并根据状态与用户界面的关系对状态进行分类。
您可能要考虑如何标准化状态形状: https://redux.js.org/recipes/structuring-reducers/normalizing-state-shape
Redux对于您的前端而言确实是一个很小的后端。我相信,纯粹主义者将在百万级别上对此进行辩论,但实际上它的作用就像是一个小的本地文档存储。
尝试更多地考虑数据的结构,而不是要在屏幕上显示的位置。
normalizr库是该库的下一个层次 https://github.com/paularmstrong/normalizr
我仍在争论我是否认为这太过分了。我的应用程序开始从MVVC变为MVCMVCCVMMV ...(您得到了,某种史诗般的罗马数字)。
相对于总是为此而访问我的API服务器,我想在本地pubsub模型中保留多少数据?
用户将页面保持打开状态多长时间,直到出现内存问题,才用新数据填充redux存储区?
redux中的垃圾回收是一个额外的话题,值得一读:https://github.com/reduxjs/redux/issues/1824
老友丹·阿布拉莫夫(Dan Abramov)对该线程有一些有用的想法。
我意识到这本身并不是一个答案,但是看来redux具有比一般答案更多的“用例场景”。