使用ImmutableJs清空数组

Hai*_*ude 2 javascript arrays immutable.js redux

我使用ImmutableJS终极版终极版,不可改变.假设我有一个初始状态,它是一个空数组:

const initialState = fromJS({
  items: [],
  other: true,
});
Run Code Online (Sandbox Code Playgroud)

我可以添加一个项目:

case ADD_ITEM:
      return state
      .updateIn(['items'], list => list.concat({id: 1231}))
      .set('other', false);
Run Code Online (Sandbox Code Playgroud)

之后我尝试使用set或清空项目数组updateIn:

case EMPTY_ARRAY:
          return state
          .updateIn(['items'],[])
          // or
          .set('items', []);
Run Code Online (Sandbox Code Playgroud)

当我尝试使用时,state.get('items').toJS()我收到错误:

items.get(...).toJS is not a function
Run Code Online (Sandbox Code Playgroud)

清空这个嵌套的不可变数组的正确方法是什么?

Pav*_*kov 7

case EMPTY_ARRAY:
      return state
      .updateIn(['items'],[]);
Run Code Online (Sandbox Code Playgroud)

应该

state.set('items', Immutable.List())
Run Code Online (Sandbox Code Playgroud)

你已经分配了属性简单Array,显然没有.toJS()方法

另外update/ updateInmethods将函数作为第二个参数.