获得警告:当使用#redux combineReducers组合reducer(每个都有自己的immutable.js Map)时,“还没有完全支持使用Maps作为子级”。什么是更好的商店结构来避免这种情况?
import reducer_2 from './action_handlers/two';
import reducer_3 from './action_handlers/three';
import { combineReducers } from 'redux';
let reducer = combineReducers({
reducer_2,
reducer_3
});
export default reducer;
//=====================
// ./action_handlers/two.js
const INITIAL_STATE_2 = new Map({
foo: 'bar'
});
export default function reducer_2(state = INITIAL_STATE_2, action) {...}
//======================
// ./action_handlers/three.js
const INITIAL_STATE_3 = new Map({
baz: 'bat'
});
export default function reducer_3(state = INITIAL_STATE_3, action) {...}
//=======================
答案 0 :(得分:0)
看起来你正在使用ES6’s Map而不是Immutable's。
答案 1 :(得分:0)
在缩减器中写下以下代码行:
import { Map } from 'immutable';
然后
const INITIAL_STATE_2 = Map({
foo: 'bar'
});
或者您可以使用
import Immutable from 'immutable';
const INITIAL_STATE_2 = Immutable.Map({
foo: 'bar'
});
答案 2 :(得分:0)
您是否将问题与Immutable.js Map数据结构或常规Map对象相关联并不是很清楚。
但是,在这两种情况下,Redux的combineReducers
都会创建一个普通对象作为根状态。如果您使用的是Immutable.js,则存在redux-immutable包,该包提供combineReducers
函数,该函数返回Immutable.js数据结构而不是对象。
答案 3 :(得分:0)
您不能结合使用redux的reducer Redux随附的CombineReducers函数将无法正常工作,因为它不知道如何读取和创建新的状态版本。