javascript - 使用 Thunk 和 Promise 中间件链接 Promise

标签 javascript reactjs redux promise redux-thunk

我同时使用 redux-promise-middlewareredux-thunk,如下所示:

import { applyMiddleware, compose, createStore } from 'redux'

import thunk from 'redux-thunk';
import promise from 'redux-promise-middleware'
import logger from 'redux-logger'

import reducer from './reducers'

const middleware = applyMiddleware(thunk, promise(), logger({diff: true}));
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const enhancer = composeEnhancers(middleware);

export default createStore(
    reducer,
    enhancer)

所以,我想做的是将几个 promise 链接在一起。 redux-promise-middleware 文档建议使用 Promise.all,如下所示:

export function startTest(test) {
    return dispatch => {
        return dispatch({
            type: START_TEST,
            id: test,
            payload: Promise.all([
                dispatch(axios.post(urlJoin(config.portalUrl, 'account/login')))
            ])
        })
    };
}

但是,当我将其发送到商店时,我收到以下错误:

Error: Actions must be plain objects. Use custom middleware for async actions.

我配置错了什么?

最佳答案

我发现了这个问题。它需要更改为这样的内容:

export function startTest(test) {
    return dispatch => {
        return dispatch({
            type: START_TEST_THUNK,
            payload: Promise.all([
                dispatch({
                    type: START_TEST,
                    payload: axios.post(urlJoin(config.portalUrl, 'account/login')),
                    meta: {
                        id: test
                    }
                })
            ])
        })
    };
}

关于javascript - 使用 Thunk 和 Promise 中间件链接 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41101940/

相关文章:

reactjs - 如何访问 Gatsby 模板组件中的上下文变量?

javascript - 与 React 中设置状态值的差异

reactjs - 返回什么?

javascript - 在 redux-orm 模式实例上使用 reducer 方法

reactjs - 我对传递给在容器内使用重新选择的选择器函数的参数感到困惑

javascript - 如何计算两个日期之间的年数?

javascript - 动态地将 javascript 插入到 <head> 标签中

javascript - 如何使用react-calendar-pane显示日历中选定的日期?

javascript - 从浏览器打印到 Brother 标签打印机

javascript - 无法在页面离开 "onbeforeunload"事件中获取自定义消息警报