2017-10-12 16 views
2

我想知道什么可以存储,什么不能存储在REDX存储中,以及为什么无法存储无法存储的内容。是否可以在Redux商店中存储Class的函数和实例?

听说我不应该存储类的实例,因为他们不容易序列化(......?)

什么像这样的功能呢?

function person(firstName, lastName) { 
    let _firstName = firstName; 
    let _lastName = lastName; 

    return { 
     fullName: `${_firstName} ${_lastName}` 
    } 
} 

另外,我想知道如果我不应该存储类的实例,为什么终极版推荐将immutable.js对象为终极版店虽然immutable.js对象是类的实例有很多方法?

更新

怎么样扩展immutable.js类的实例记录?

+0

已更新我的回答 – palsrealm

回答

3

Redux商店应该是应用程序的'单一来源'。这是应用程序的所有状态应该驻留的地方。任何可以存储为组件的state的类型都可以存储在Redux中。

您的问题似乎由2个主要部分组成。

  1. 应该将组件存储在Redux中吗?。 (我假设你的意思是React组件的“实例类”)简短的回答是。组件可以分为2部分,标记(以及方法中的关联逻辑)和组件的状态。一旦组件创建完成,组件的标记和关联逻辑将永远不会改变。这是组件的状态不断变化,并且此状态应用于组件,组件的标记相应地发生变化。如果我们能够得到组件的状态,我们可以将它应用到组件并获得必要的标记。因此,将组件存储在Redux中将不会给我们带来任何好处,因为我们只会加载一次,并且它永远不会改变。

    就Immutable.js对象的实例而言,它们通常是表示组件状态的对象。因此,它们是应该存储在Redux商店中的主要示例。

    编辑:关于Immutable.js记录,它们是普通json对象的不可变版本,其形状不能被篡改。它们被用来表示组件的状态,并且通过设计是不可改变的;这将使它们成为在Redux中存储的理想选择,因为我们不应该改变存储在Redux中的状态。

  2. 函数应该存储在Redux中吗?答案再次是。函数是纯逻辑,应用于输入参数以获取输出。对于相同的输入,一个函数理想情况下会给出相同的输出。因此,存储这些函数将不起作用,因为一旦创建它们,它们就永远不会改变。

    您的问题中的功能将始终为相同的输入提供相同的输出。因此,不建议存储该函数;而是将输入值存储在Redux中并将其应用于函数以获取输出,将被推荐。