如何在reducer中正确更改状态,以便组件可以接收更新

时间:2017-05-14 18:50:27

标签: reactjs react-native redux react-redux

在减速机中我有:

if (action.type === 'remove_item') {
      delete state.itemsList[action.itemId];
      return {
        ...state
      }

但是现在componentWillReceiveProps(nextProps)看不出区别:

this.props.items !== nextProps.items

我知道发生这种情况是因为我直接在reducer中更改了状态但是现在不知道如何传播这个更改所以nextProps会有新的状态数据吗?

2 个答案:

答案 0 :(得分:3)

它没有显示更改,因为状态对象是不可变的,并且您直接对不可变对象执行操作。

试试这个:

if (action.type === 'remove_item') {
      var list = state.itemsList.splice();
      list[action.itemId] = null
      return {
        ...state,
        itemsList: list,
      }

干杯:)

答案 1 :(得分:3)

尝试

...state.itemsList.filter((_, index) => index !== action.itemId)

所以你不要改变原始状态,而是创建一个新数组。