在减速机中我有:
if (action.type === 'remove_item') {
delete state.itemsList[action.itemId];
return {
...state
}
但是现在componentWillReceiveProps(nextProps)
看不出区别:
this.props.items !== nextProps.items
我知道发生这种情况是因为我直接在reducer中更改了状态但是现在不知道如何传播这个更改所以nextProps会有新的状态数据吗?
答案 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)
所以你不要改变原始状态,而是创建一个新数组。