【发布时间】:2021-01-09 11:05:38
【问题描述】:
我在我的应用程序中使用 redux 反应,我将状态作为对象数组,在 reducer 中用于在数组中添加新元素,整个状态被更改为 4,而不是与旧元素一起显示新元素并给出我的错误“todos.map 不是函数”。
我的状态
export const todos = [
{
id: "1",
item: "Buy Milk"
},
];
减速器
export const reducer = (state = todos, action) => {
let newTodos;
switch (action.type) {
case ADD_TODO:
newTodos = state;
newTodos = newTodos.push(action.payload);
return newTodos;
case DELETE_TODO:
break;
case UPDATE_TODO:
break;
default:
return state;
}
};
redux 开发工具中的 action.payload(ADD_TODO)
type(pin): "ADD_TODO"
payload(pin)
id(pin): "870f7b60-5267-11eb-85d2-cbd5e33df548"
item(pin): "ghgh"
调度操作后出现错误“todos.map 不是函数”并且状态正在更改为
(pin): 4
【问题讨论】:
-
那是因为你不是 gettig 数组作为响应,所以 .map 并不意味着 .. 你可以记录你的 newTodos 和 action.payload 以及之后的新 todos
-
这里去掉赋值
newTodos =newTodos.push(action.payload);,因为push会返回数组的长度,所以你把数组改成数字 -
感谢 ArazShamsaddinlouy 和 @Naren,我会记下来的。
标签: javascript reactjs redux