Redux状态下的数组列表

Jus*_*der 4 immutable.js redux

这是关于Redux js中的状态的问题.我在状态中有一个数组列表:

{
  list: list
}
Run Code Online (Sandbox Code Playgroud)

根据Redux文档,我不应该修改reducer中的状态.我想在列表中附加一个新项目.我应该克隆列表,还是只是将新项目附加到列表中:

let newList = state.list;
newList.push(newItem);
return {
  list: newList
}
Run Code Online (Sandbox Code Playgroud)

上面的代码实际上修改了原始状态,因为newList与"state.list"是相同的列表.这是一个好的做法,还是应该使用immutableJS克隆列表?

Qus*_*uda 10

您正在改变列表并返回相同的参考.我相信下面的内容应该是一个新的副本

return { list: [...state.list, newItem] }
Run Code Online (Sandbox Code Playgroud)

使用immutableJS不是强制性的.但你需要确保不改变状态.

查看深度冻结库以确保您的状态未被编辑.

来自Dan(redux的创建者)的这段视频也应该有所帮助