我可以在Redux中存储一组类实例吗?

时间:2020-11-02 13:11:19

标签: reactjs oop redux react-redux

在运行Redux的教程之一时,我遇到了以下警告:“ Redux操作和状态应仅包含普通的JS值,例如对象,数组和基元。不要放置类实例,函数或其他不可序列化的值导入Redux!

这是否意味着不应将类实例数组保存在redux中?例如,说我有一个聊天应用程序。假设我有一个Conversation类,其中包含参与者数组,消息数组,ID等。我可以在Redux中添加一系列Conversation实例吗?

如果没有,为什么? React应用程序的数据模型是否应该不太多依赖类和继承?

2 个答案:

答案 0 :(得分:1)

从技术上来说是可能的,但是you should not add class instances to the Redux state!

React和Redux都希望您为状态使用普通的JS对象,数组和基元-而不是类实例。 They also expect that you update that data immutably

您的数据也一定依赖继承。

答案 1 :(得分:-1)

普通JS值只是一个普通旧JavaScript对象(PO​​JO)

var obj = {};// this is a POJO
var obj = new Object();// this is POJO

不是PJOJ的是这样的

var Obj = function(welcome_text) {
  this.welcome_text = welcome_text;
}
var c = new Obj("Welllllcome!!!!");// this is not a POJO !

我关注了redux的文档,他们在此link中给出了一个示例。他们解释说,例如,您不能将new Date()作为操作/状态的参数,因为新的Date()将返回非POJO!相反,您应该new Date().toISOString()只能返回一个字符串。

因此,为了回答您的直接问题(我可以在Redux中添加一系列对话实例吗?

是的,您可以