为什么我的状态不会使用immutableJS改变?

时间:2016-05-17 04:27:04

标签: javascript reactjs redux immutable.js

我正在尝试将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少一个。但是当我控制日志状态时它是一样的。我错过了什么?

1 个答案:

答案 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