我正在使用 React + Redux 制作网站。在我添加中间件之前,应用程序工作正常,但添加后,reducer 无法正确调度。
这是我的代码:
import { createStore, applyMiddleware } from 'redux';
...
let createStoreWithMiddleware = applyMiddleware(logger)(createStore);
let store = createStoreWithMiddleware(appReducer);
store.dispatch(updateText('text changed.'));
这是我上面刚刚使用的 Action 创建器:
const UPDATE_TEXT = 'UPDATE_TEXT';
function updateText(text = '') {
return {
type: UPDATE_TEXT,
text
};
}
这是appReducer:
const defaultState = { text: 'default' };
function appReducer(state = defaultState, action) {
switch(action.type) {
case UPDATE_TEXT:
return Object.assign({}, state, {
text: action.text
});
default:
return state;
}
}
如果我只是删除 applyMiddleware 并直接使用 createStore 创建商店,如下所示:
let store = createStore(appReducer);
效果很好!但我真的想使用中间件。我应该怎么办?任何人都可以帮我,我将不胜感激!
最佳答案
在旧版本的 redux-logger 中(您可能正在使用),初始导入是一个需要首先像这样调用的函数:
import createLogger from 'redux-logger'
const logger = createLogger()
然后你可以使用logger
作为中间件:
...
const createStoreWithMiddleware = applyMiddleware(logger)(createStore)
...
但是,在当前版本中,您可以简单地从“redux-logger”导入记录器
并以这种方式使用它。如果您想创建具有自定义选项的记录器,可以从 'redux-logger' 导入 { createLogger }
。
关于javascript - 在 Redux 中,在 store 上应用中间件并没有正确地称为 reducer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36841755/