设计指南
以下是有关命名和样式约定的建议。
状态后缀
状态应始终以State一词作为后缀。 首选:ZooState 而不是 Zoo
状态文件名
状态文件名称应带有.state.ts后缀
状态接口
状态接口应命名为状态名称,后跟 Model 后缀。 如果我的状态称为 ZooState ,则将其称为状态接口 ZooStateModel。
选择后缀
选择项应带有 $ 后缀。 首选:animals$,而不是 animals
插件后缀
插件应以 Plugin 后缀结尾
插件文件名
插件文件名应以 .plugin.ts 结尾
文件夹组织
全局状态应放在 src/shared/state里面。 功能状态应位于相应的功能文件夹结构 src/app/my-feature 中。 动作可以存在于状态文件中,但建议使用单独的文件,例如:zoo.actions.ts。
动作后缀
动作不应有后缀
单元测试
状态的单元测试应命名为 my-state-name.state.spec.ts 的样子
动作的操作
动作不应处理与视图相关的操作(如:显示弹出窗口)。 应使用操作流来处理这类操作
避免在状态中保存基于类的实例
状态存储的对象应该是不可变的,并且应该支持序列化和反序列化。 因此,建议在您的状态下存储纯对象文字。 基于类的实例在序列化和反序列化方面并非易事,而且它们常常通过公开操作封装内部结构和改变内部状态。 这与状态中存储的数据要求不符。
这也适用于使用数据集(例如Set,Map,WeakMap,WeakSet等)。由于它们不适合反序列化,因此不易呈现以进行标准化。
避免
不建议将基于类的对象实例添加到您的状态,因为这将可能导致未定义的行为。
推荐
展平深层对象图(Flatten Deep Object Graphs)
在Redux中处理分层数据的一般建议是对其进行规范化。 这将需要以与设计关系表相同的方式对其进行展平,它具有引用父对象的键。
避免
注意:不建议使用Set,Map,WeakMap,WeakSet等数据收集。因为它们不适合反序列化,并且不易呈现以进行标准化。
推荐
Last updated
Was this helpful?