React redux异步操作

时间:2017-05-23 08:56:08

标签: javascript asynchronous react-redux

我一直在尝试将redux实现到我的React应用程序中并使用this guide进行ajax调用。

Example Actions Example Container

除了我收到错误之外,我的代码与他的代码几乎相同:

  

未捕获错误:操作必须是普通对象。使用自定义中间件进行异步操作

我查看了他的代码并且他没有应用中间件或做任何与众不同的事情

我的异步动作

import axios from 'axios';

const GET_POSTS = 'GET_POSTS';
const getPosts = () => {
    const request = axios.get('/url');
    return { type: GET_POSTS, payload: request };
};

我的容器用量

import { getPosts } from './actions';

//other stuff

const mapDispatchToProps = dispatch => {
    return {
        getPosts: () => {
            dispatch(getPosts()).then(response => {
                console.log(response);
            });
        }
    };
};

//connect functions to component

我的猜测是他的例子不起作用?我已经全神贯注地寻找解决方案,并且我理解dispatch会返回函数返回的任何内容(在这种情况下,这不是一个承诺)。据我所知,如果我希望函数返回一个promise,我将不得不使用中间件。我对目前是否做错事(以及那是什么)感到困惑,或者是否是他的例子被打破了?谢谢你的帮助

1 个答案:

答案 0 :(得分:4)

在指南中,您将使用中间件。请检查'步骤8':

...
import promise from 'redux-promise';
...

//Configure middleware w/ redux-promise for AJAX requests
const createStoreWithMiddleware = applyMiddleware(
  promise
)(createStore);