我正在ImmutableJS和Redux使用redux-immutable。假设我有一个初始状态,它是一个空数组:
const initialState = fromJS({
items: [],
other: true,
});
我可以添加一个项目:
case ADD_ITEM:
return state
.updateIn(['items'], list => list.concat({id: 1231}))
.set('other', false);
之后我尝试使用set
或updateIn
清空项目数组:
case EMPTY_ARRAY:
return state
.updateIn(['items'],[])
// or
.set('items', []);
当我尝试使用state.get('items').toJS()
时出现错误:
items.get(...).toJS is not a function
清空这个嵌套的不可变数组的正确方法是什么?
答案 0 :(得分:6)
case EMPTY_ARRAY:
return state
.updateIn(['items'],[]);
应该是
state.set('items', Immutable.List())
您已分配到简单Array
的属性,但显然没有.toJS()
方法
同样update
/ updateIn
方法将函数作为第二个参数。