我正在尝试将immutableJS添加到Mern.io.当我尝试从我的帖子列表中删除帖子然后将其设置回我的状态时,状态不会更新。
case ActionTypes.DELETE_POST :
const removeArray = state.get('posts')
.filter((post) => post._id !== action.post._id)
console.log(removeArray.length)
state.set('posts', removeArray)
console.log(state)
return state;
在这个例子中,如果我有一个5的数组,我应该能够将其过滤掉,然后再使用新数组设置“posts”。我不明白的是我可以从数组中删除对象,removeArray将比state.posts少一个。但是当我控制日志状态时它是一样的。我错过了什么?
答案 0 :(得分:6)
当你致电state.set(...)
时,它会返回一个新对象。原始state
未更改。我在你的代码段中更改了3行:
case ActionTypes.DELETE_POST :
const removeArray = state.get('posts')
.filter((post) => post._id !== action.post._id)
console.log(removeArray.length)
const newState = state.set('posts', removeArray) // assign to another variable
console.log(newState) // and log here
return newState; // and you'll probably want to return the new state