0

In Reducer for initial state I am using a seamless-immutable.

export const INITIAL_STATE = Immutable({
  foo:[],

})




function orderReducer(state = initialState, action) {
  console.log('reducer is runnig');

  switch (action.type) {
    case GET_MENU: {

      return state.foo.push("newData") // how to achive this <----
    }

    default:
      return state;
  }
}

How do I to push new data into the foo?

4

1 回答 1

0

如果你想坚持使用 ImmutableJS,你可以使用new List()它有一个push方法。这是文档。有一堆具有不同 API 的数据集总是返回不可变对象。你需要开始学习这些。

但是,如果您正在寻找一种熟悉的方式来处理不变性,我建议您切换到Immer。它让您可以使用纯 javascript 返回不可变对象,因此您无需学习任何新的 API。看看这里:

https://github.com/mweststrate/immer

我个人总是使用带有扩展运算符的纯 JavaScript。我觉得它舒适、快速,没有任何额外的库。当您习惯语法时非常冗长:

const pushedArr = [...oldArray, newElement]
const mergedObj = {...objA, ...objB}

既然您知道了一些替代方案,请找到最适合您和您的团队的方式。

于 2018-01-26T10:37:35.787 回答