我遇到了将todo
添加到todos
经典版本的问题。在React / Redux上进行。
此处reducer-todos.js
:
export default function (state=[
{
id: 0,
todo: "Study English"
},
{
id: 1,
todo: "Run sprint"
},
{
id: 2,
todo: "Call Bob"
}], action) {
switch(action.type) {
case "ADD_TODO":
return state.push({id: state.length, todo: action.todo});
break;
}
return state;
}
这是我得到的问题:
不知何故todos
对象变为4
,而不是数组[4]。为什么会这样?
如果需要其他信息,请与我们联系。
答案 0 :(得分:2)
不知何故,todos对象变为4,而不是Array [4]。为什么会这样?
您正在使用push
,它将返回其新尺寸。使用concat
代替将返回一个新数组,同时添加新项目而不会发生变异。
所以这个:
return state.push({id: state.length, todo: action.todo});
应该成为:
return state.concat({id: state.length, todo: action.todo});