我正在努力学习如何正确使用Immutable.js。我找到了这篇文章:http://frontendinsights.com/immutablejs-with-redux-his-best-friend/。
它有以下代码段:
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作为状态返回。
我尝试了以下的不可变:
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状态?