我在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。如何解决此警告请帮助我。
答案 0 :(得分:1)
我今天遇到了这个问题,因为似乎没有答案,我会给出对我有用的东西。
当我使用createStore函数设置initialState时出现此错误。我没有任何匹配初始状态树布局的化简器,这意味着redux会忽略我的某些初始状态。不过,这似乎仅适用于树中的第一级键,让嵌套键通过似乎很高兴。
因此,如果要获取此信息,请确保您的initialState和reducers具有匹配的树。这在the createStore documentation中也有描述。