如何使用React正确使用redux-thunk?

时间:2016-09-14 13:17:59

标签: reactjs redux

我试图让我的应用程序不要抱怨操作没有未定义的类型属性。

我已将我的客户端渲染设置如下:

import React from 'react';
import ReactDOM from 'react-dom';
import routes from './shared/routes';
import rootReducer from './shared/reducers';
import thunk from 'redux-thunk';
import { createStore, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';

let initialState = window.__INITIAL_STATE_;

const store = createStore(rootReducer, initialState, applyMiddleware(thunk));

ReactDOM.render(
<Provider store={store}>
    {routes}
</Provider>, document.getElementById('app'));

我认为哪种方法正确?

1 个答案:

答案 0 :(得分:1)

是。在redux-thunk github页面中有一个如何使用它的很好的例子。

对于您的操作,如果它是异步操作,我使用此方法使用promises调度异步操作:

行动:

export function add({name, time}) {
  return dispatch => {
    dispatch({type: ADD});
    return postJSON('/api/services', {
      name,
      time,
    })
    .then(service => {
      dispatch({
        type: ADD_SUCCESS,
        service: service,
      });
    })
    .catch(error => {
      dispatch({
        type: ADD_FAILURE,
        error,
      });
    });
  };
}

在我的组件中:

  addService () {
    const { dispatch } = this.props;
      return (fields) => {
        dispatch(add(fields));
        dispatch(toggleAddForm());
      };
  }