在运行Redux的一个教程时,我遇到了以下警告:">Redux操作和状态应该只包含简单的JS值,如对象、数组和基元。不要将类实例、函数或其他不可序列化的值放入Redux";
这是否意味着类实例的数组不应该保存在redux中?例如,假设我有一个聊天应用程序。假设我有一个Conversation类,它包含一组参与者、一组消息、一个id等。我可以添加一组Conversation实例吗?
如果没有,为什么?React应用程序的数据模型应该不太依赖于类和继承吗?
从技术上讲可以做到这一点,但您应该不要将类实例添加到Redux状态。
React和Redux都希望您使用纯JS对象、数组和基元作为状态实例,而不是类实例。他们还希望你能不受干扰地更新这些数据。
您的数据也应该明确而不是依赖于继承。
纯JS值只是普通旧JavaScript对象(POJO(:
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的文档,他们在这个链接中给出了一个例子。他们解释说,例如,您不能将new Date()
作为操作/状态的参数,因为新的Date((将返回非POJO!相反,您应该执行new Date().toISOString()
,它将返回一个字符串。
因此,为了回答您的直接问题(我可以添加一组对话实例吗?(
是的,你可以。