javascript - 在 Redux 中,在 store 上应用中间件并没有正确地称为 reducer

标签 javascript reactjs redux react-redux

我正在使用 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/

相关文章:

javascript - 如何在ReactJS中的导出函数中使用this.state

javascript - 单元测试 - 通量和数据持久性

javascript - 如何使用从 Redux 返回的嵌套数据结构而不遇到 'cannot access property x of undefined' 等错误?

javascript - 使用 jQuery Validation 插件进行数据类型验证

javascript - 匹配最多 9 位整数的正则表达式

javascript - 使用 slider 调整 div 的不透明度

javascript - JSX 条件不适用于 React

angular - 在 rxjs/ngrx 效果中链接 Action 的正确方法是什么

javascript - 我应该在 react 组件或 redux Action 中获取数据吗?

javascript - 使用 NodeJS 在 Web 浏览器上使用 Raspberry Pi 相机模块访问直播?