Javascript 为什么可以将Immutable.js映射作为Redux状态返回?
我正在努力学习如何正确使用Immutable.js。我发现这篇文章: 它有以下代码段:Javascript 为什么可以将Immutable.js映射作为Redux状态返回?,javascript,reactjs,react-redux,immutable.js,Javascript,Reactjs,React Redux,Immutable.js,我正在努力学习如何正确使用Immutable.js。我发现这篇文章: 它有以下代码段: const initialState = Immutable.Map({ counter: 0 }); const reducer = (state, action) => { switch (action.type) { case 'INCREMENT': return state.set('counter', state.get('counter') + 1); case 'DECR
const initialState = Immutable.Map({ counter: 0 });
const reducer = (state, action) => {
switch (action.type) {
case 'INCREMENT':
return state.set('counter', state.get('counter') + 1);
case 'DECREMENT':
return state.set('counter', state.get('counter') - 1);
default:
return state;
}
};
const store = createStore(reducer, initialState);
让我困惑的是,对我来说,开关似乎正在以状态返回Map
我用以下方法尝试了immutable:
var obj = {
lol: 'trol',
}
var immu = Immutable.Map(obj)
var immu2 = immu
immu2 = immu2.set('lol', 'trollz')
console.log(immu2) // Map {size: 1, _root: ArrayMapNode, __ownerID: undefined, __hash: undefined, __altered: false}
console.log(immu2.toObject()) // Object {lol: "tral"}
我认为Redux状态必须始终是对象
那么,Map()实际返回的是什么?为什么可以将其设置为Redux状态?我不认为Redux实际上对状态类型施加了任何限制。@Nikolajdallarsen如本文所述,只要状态是可序列化的,就没有限制:。但是,函数不能存储为状态。映射有方法,对吗?redux不会检查并确保没有方法,它只会序列化任何可以序列化的方法,如果你要求的话。我使用
redux immutable
来确保一切按预期进行。