我想知道 redux store 中可以存储什么,不能存储什么,以及为什么不能存储不能存储的内容。
我听说我不应该存储 Class 的实例,因为它们不容易序列化(...?)
像这样的函数呢?
function person(firstName, lastName) {
let _firstName = firstName;
let _lastName = lastName;
return {
fullName: `${_firstName} ${_lastName}`
}
}
Run Code Online (Sandbox Code Playgroud)
另外,我想知道我是否不应该存储 Class 的实例,为什么 redux 建议将 immutable.js 对象存储到 redux 存储中,尽管 immutable.js 对象是具有许多方法的 Class 实例?
扩展 immutable.js Record 的类的实例怎么样?
Redux 存储应该是应用程序的“单一事实来源”。这是应用程序的所有状态应该驻留的地方。任何可以作为state组件存储的类型都可以存储在 Redux 中。
您的问题似乎由两个主要部分组成。
组件应该存储在 Redux 中吗?。(我假设“类实例”指的是 React 组件)简单的答案是否定的。组件可以分为两部分:标记(以及方法中的关联逻辑)和组件的状态。一旦组件被创建,组件的标记和关联逻辑将永远不会改变。组件的状态不断变化,并且该状态应用于组件,组件的标记也会相应变化。如果我们能够获取组件的状态,我们就可以将其应用到组件并获取必要的标记。因此,将组件存储在 Redux 中不会给我们带来任何好处,因为我们只会加载它一次并且它永远不会改变。
就 Immutable.js 对象的实例而言,它们通常是表示组件状态的对象。因此,它们是 Redux 存储中应存储内容的主要示例。
编辑:关于 Immutable.js 记录,它们是普通 json 对象的不可变版本,其形状无法篡改。它们用于表示组件的状态,并且在设计上是不可变的;这使得它们非常适合存储在 Redux 中,因为我们不应该改变存储在 Redux 中的状态。
函数应该存储在 Redux 中吗?答案再次是否定的。函数是纯逻辑,应用于输入参数以获得输出。对于相同的输入,函数理想情况下会给出相同的输出。因此,存储这些函数将没有任何用处,因为它们一旦创建就永远不会改变。
您问题中的函数将始终为相同的输入提供相同的输出。因此,不建议存储该函数;建议将输入值存储在 Redux 中并将其应用到函数中以获得输出。
| 归档时间: |
|
| 查看次数: |
4148 次 |
| 最近记录: |