我需要一些关于Redux不可变数组状态的帮助。我从动作获取对象数组并将其传递给reducer。 在我的reducer文件中,我正在改变数组,每次都给我一个新的副本。
我面临的问题是它总是给我以前的+新数组(哪个是正确的)就像继续添加新状态的新数组一样,我只需要最后一个更新数组。因为我必须通过反应。
export default (state = {}, action) => {
switch (action.type) {
case EVT.LB_FOLLOWING_CHANGE:
return [
...state,
action.payload
];
break;
default:
return state;
}
};
答案 0 :(得分:1)
您正在使用上一个+新数组,因为您正在使用扩展运算符...
。在MDN文档中,https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operator
扩展语法允许在需要多个参数(用于函数调用)或多个元素(用于数组文字)或多个变量(用于解构赋值)的地方扩展表达式。
在您的情况下,在state
之前使用扩展运算符会将状态数组中的所有值附加到要返回的数组中。要仅返回操作中收到的值,您只需返回[action.payload]
。
您可以参考上面的文档链接,查看有关如何正确使用扩展语法的更多示例。
答案 1 :(得分:0)
请执行以下操作:
"responseHeader":{
"status":400,
"QTime":7,
"params":{
"q":"category:commercial%2BAND%2Bproperty_type:office",
"group.main":"true",
"indent":"on",
"fl":"listing_id,listing_status",
"group.limit":"1",
"rows":"100",
"wt":"json",
"group.field":"listing_status",
"group":"true"}},
"error":{
"msg":"org.apache.solr.search.SyntaxError: Cannot parse 'category:commercial%2BAND%2Bproperty_type:office': Encountered \" \":\" \": \"\" at line 1, column 41.\nWas expecting one of:\n <EOF> \n <AND> ...\n <OR> ...\n <NOT> ...\n \"+\" ...\n \"-\" ...\n <BAREOPER> ...\n \"(\" ...\n \"*\" ...\n \"^\" ...\n <QUOTED> ...\n <TERM> ...\n <FUZZY_SLOP> ...\n <PREFIXTERM> ...\n <WILDTERM> ...\n <REGEXPTERM> ...\n \"[\" ...\n \"{\" ...\n <LPARAMS> ...\n <NUMBER> ...\n ",
"code":400}}