【发布时间】:2017-05-31 21:17:10
【问题描述】:
我尝试的第一件事是:
const initialState = {
items: {},
showCart: false,
showCheckout: false,
userID: null
};
export default function reducer(state=Immutable.fromJS(initialState), action) {
case 'REMOVE_FROM_CART':
return state.deleteIn(['items', String(action.id)]);
}
当控制台记录上面的 deleteIn 时,它实际上确实从 Map 中正确删除了该项目。但是,该应用程序不会再次重新渲染,因为我假设我正在改变状态(?)。 (mapStateToProps 被调用,但没有新的状态)。
所以接下来我尝试了这个:
case 'REMOVE_FROM_CART':
const removed = state.deleteIn(['items', String(action.id)]);
const removeItemState = {
...state,
items: { removed }
}
return state.mergeDeep(removeItemState);
但我只是将已删除的项目再次添加到项目中,从而创建了重复项。
我该如何处理?
【问题讨论】:
标签: javascript ecmascript-6 redux immutable.js