警告:意外的密钥" A"在减速机收到的先前状态下发现

时间:2017-01-24 10:49:29

标签: reactjs redux react-redux

我在ES6的fmap id m == fmap id action == id action fmap (f.g) action = ? (fmap f . fmap g) action = ? require.ensure()的{​​{1}}的帮助下动态添加了该组件。一旦我打开具有相同键的每个记录的单独选项卡,例如" A",我就会收到上述错误。我的动态加载是这样的:

getComponent()

react-router的代码是这样的:

 require.ensure([], (require) => { 
     const req = require('./components/A).default 
     const reducer= require('./modules').default
     injectReducer(store, {
         key: 'A',
         reducer
     })
     cb(null, req)
 })

现在问题是在浏览器标签打开时,除了第一次显示警告:

  

意外的键" A"在减速器收到的先前状态中找到了预期找到一个已知的减速器键:" B"," C"。意外的密钥将被忽略。

如果我最初会通过Key' A' createstore()然后此警告将会消失。但是这个export const makeRootReducer = (asyncReducers) => { return combineReducers({ B, C, ...asyncReducers }) } export const injectReducer = (store, { key, reducer }) => { if (Object.hasOwnProperty.call(store.asyncReducers, key))return store.asyncReducers[key] = reducer store.replaceReducer(makeRootReducer(store.asyncReducers)) } 是全局的,它将保持reducer的状态,以便我不想在初始加载时传递此Key。如何解决此警告请帮助我。

1 个答案:

答案 0 :(得分:1)

我今天遇到了这个问题,因为似乎没有答案,我会给出对我有用的东西。

当我使用createStore函数设置initialState时出现此错误。我没有任何匹配初始状态树布局的化简器,这意味着redux会忽略我的某些初始状态。不过,这似乎仅适用于树中的第一级键,让嵌套键通过似乎很高兴。

因此,如果要获取此信息,请确保您的initialState和reducers具有匹配的树。这在the createStore documentation中也有描述。