Javascript 如何在大型规范化Redux存储中组织减缩器
我已经阅读了Redux网站上的官方文档、一些在线文章以及有关StackOverflow的一些问题,但我仍然不知道如何组织我的州 我规范化了,因为有些实体引用了同一个对象,处理这一点会有问题 正常化后,这是我的状态:Javascript 如何在大型规范化Redux存储中组织减缩器,javascript,reactjs,react-native,redux,normalizr,Javascript,Reactjs,React Native,Redux,Normalizr,我已经阅读了Redux网站上的官方文档、一些在线文章以及有关StackOverflow的一些问题,但我仍然不知道如何组织我的州 我规范化了,因为有些实体引用了同一个对象,处理这一点会有问题 正常化后,这是我的状态: state: { measurementSystems: { 0: {}, 1: {} }, measurementUnits: { 0: {}, 1: {} }, sameTypeUnitConverters: { 0: {}, 1: {} }, b
state: {
measurementSystems: { 0: {}, 1: {} },
measurementUnits: { 0: {}, 1: {} },
sameTypeUnitConverters: { 0: {}, 1: {} },
bodyMeasurementTypes: { 0: {}, 1: {} },
bodyMeasurements: { 0: {}, 1: {} },
bodyMeasurementShortcutSettings: { 0: {}, 1: {} },
uniqueBodyMeasurements: { 0: {}, 1: {} },
nutritionalTables: { 0: {}, 1: {} },
dataSources: { 0: {}, 1: {} },
foodGroups: { 0: {}, 1: {} },
foods: { 0: {}, 1: {} },
diaryEntries: { 0: {}, 1: {} },
mealSettings: { 0: {}, 1: {} },
goals: { 0: {}, 1: {} },
users: { 0: {}, 1: {} }
};
我的问题是:如何为这种规范化状态编写还原程序?我是否应该为每个状态编写一个减速机,然后执行相同的操作?或者我应该为每个动作创建一个减速机,并让这个减速机管理所有状态
例如,如果我每个州有一个减速机,并发送一个删除日志项的操作。我必须让所有在日记条目中有引用的州来处理此操作,并检查它们是否需要删除已删除的引用。但是我该怎么做这些检查呢
否则,如果每个操作有一个减速机,这些减速机可以开始执行非常类似的任务,并与当前的状态体系结构非常耦合
本部分仅用于澄清
以下是他们的意思(这是一个跟踪你吃什么的应用程序):
- 日记条目代表日记中的食物;食品属于食品组,具有数据源。食品还具有营养表和测量值李>
- 测量系统、测量系统和sameTypeUnitConverter用于存储厘米、米和磅等测量的精确信息
- 身体测量类型、身体测量和唯一身体测量用于跟踪用户测量,例如胸部大小
- 测量设置和车身测量短切设置是应用程序界面的设置
目录
的单独部分中。它们可以通过请求目录
和接收目录
操作从后端加载,并在应用程序中保持只读CHANGE\u ENTITY
之类的通用操作,这些操作将在有效负载中携带entityType
entityType
将是diaryEntries
或BodyMeasures
或用户想要修改的任何其他内容
比如说
{ type: 'CHANGE_ENTITY', entityType: 'diaryEntries', key: 0, value: 'some value' }
通过这种方法,所有的商店都可以是单片的。@Flyodor谢谢你的回答,我完全同意!但我正在寻找关于Reducer实现的更多细节。示例:目前,我每个状态有一个减速器,并处理它们上的操作。对于影响多个实体的操作,我已创建了一个sharedActions文件,并执行了诸如DELETE_Daily_ENTRY_和REMOVE_FOOD这样的操作:在该操作中,我包括了日记条目的ID和要移除的食物,因此我可以在日记条目和foods中处理该操作(并搜索引用以检查是否可以删除它)。您可以分享一下您通常是如何做到这一点的吗?