Reactjs 反应+;Redux不可变数组缩减器
我需要一些关于Redux不可变数组状态的帮助。我从actions中获取对象数组,并将其传递给reducer。 在我的reducer文件中,我对数组进行免疫,它每次都给我一个新副本 我面临的问题是,它总是给我以前的+新数组(这是正确的),就像不断添加新状态的新数组,我只需要最后一次更新数组。因为我必须通过考试才能做出反应Reactjs 反应+;Redux不可变数组缩减器,reactjs,redux,Reactjs,Redux,我需要一些关于Redux不可变数组状态的帮助。我从actions中获取对象数组,并将其传递给reducer。 在我的reducer文件中,我对数组进行免疫,它每次都给我一个新副本 我面临的问题是,它总是给我以前的+新数组(这是正确的),就像不断添加新状态的新数组,我只需要最后一次更新数组。因为我必须通过考试才能做出反应 export default (state = {}, action) => { switch (action.type) { case EVT.L
export default (state = {}, action) => {
switch (action.type) {
case EVT.LB_FOLLOWING_CHANGE:
return [
...state,
action.payload
];
break;
default:
return state;
}
};
只需执行以下操作:
case EVT.LB_FOLLOWING_CHANGE:
return [action.payload];
由于您使用的是扩展运算符
…
,因此获得的是上一个+新数组。从MDN文档中
扩展语法允许在需要多个参数(用于函数调用)或多个元素(用于数组文字)或多个变量(用于解构赋值)的位置展开表达式
在您的情况下,在state
之前使用spread操作符将state数组中的所有值追加到要返回的数组中。要仅返回操作中收到的值,只需返回[action.payload]
您可以参考上面的文档链接,查看更多有关如何正确使用排列语法的示例。在一定程度上取决于您的操作。根据您所说的,我认为您的操作返回的(action.payload)是您希望您的状态成为的状态-对吗?如果是这样,请尝试将
return[…state,action.payload]
更改为return[action.payload]
。我应该澄清,上述操作应该有效,因为您返回的是新状态,如果您的有效负载包含该状态中所需的所有内容,则您只需要返回这些内容。当您在返回开始时有…state
时,首先返回状态的当前值,然后附加action.payload。这就是为什么您总是获得以前的阵列和新阵列。