【发布时间】:2019-01-10 13:49:54
【问题描述】:
我正在使用 Redux 来更新我的不可变状态。我想通过简单地定位 list[] 来更新我的减速器中的嵌套对象数组,因为我需要用新对象更新它。我的第一个项目 (board1) 列表在我调度操作时确实会更新,但是一旦我调度下一个项目 board2 及更高版本,它们会覆盖我的状态并返回单个项目。非常感谢您的帮助.. 谢谢
const initialState = {
board: [
{ boardId: 1, boardname: "board1", list: [] },
{ boardId: 2, boardname: "board2", list: [] }
]
};
export default function(state = initialState, action) {
switch (action.type) {
case "ADD_LIST":
state = {
...state.board,
board: [
...state.board[action.payload.boardId - 1],
{
...state.board[action.payload.boardId - 1],
list: [
...state.board[action.payload.boardId - 1].list,
{
listId: state.board[action.payload.boardId - 1].list.length + 1,
listname: action.payload.listname
}
]
}
]
};
break;
default:
break;
}
return state;
}
【问题讨论】:
-
你已经用
immutable.js标记了这个问题,但似乎使用的是 ES6 扩展运算符,而不是immutable.js提供的任何出色的嵌套结构更新功能 -
我会推荐 icepick 库。
标签: reactjs redux react-redux immutable.js