在初始状态的Reducer中,我使用的是无缝不可变的。
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;
}
}
如何将新数据推送到foo?
答案 0 :(得分:0)
如果您想坚持使用ImmutableJS,可以使用new List()
方法的push
。 Here are the docs。有许多具有不同API的数据集始终返回不可变对象。你需要开始学习它们。
但是,如果您正在寻找一种熟悉的方法来处理不变性,我建议您切换到 Immer 。它允许您使用普通的javascript来返回不可变对象,因此您不需要学习任何新的API。看看这里:
https://github.com/mweststrate/immer
我个人总是使用简单的javascript和spread运算符。我发现它舒适,快速,没有任何额外的库。当你习惯语法时非常冗长:
const pushedArr = [...oldArray, newElement]
const mergedObj = {...objA, ...objB}
现在您已了解一些替代方案,找到最适合您和您的团队的方式。