Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以将Immutable.js映射作为Redux状态返回?_Javascript_Reactjs_React Redux_Immutable.js - Fatal编程技术网

Javascript 为什么可以将Immutable.js映射作为Redux状态返回?

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

我正在努力学习如何正确使用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 '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
来确保一切按预期进行。