对于那些使用中间件 API 层来抽象他们对isomorphic-fetch 之类的东西的使用,并且碰巧使用redux-thunk 的人,您可以简单地将您的dispatchPromise 链接到您的操作中,如下所示:
import { push } from 'react-router-redux';
const USER_ID = // imported from JWT;
function fetchUser(primaryKey, opts) {
    // this prepares object for the API middleware
}
// this can be called from your container
export function updateUser(payload, redirectUrl) {
    var opts = {
        method: 'PUT',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(payload)
    };
    return (dispatch) => {
        return dispatch(fetchUser(USER_ID, opts))
            .then((action) => {
                if (action.type === ActionTypes.USER_SUCCESS) {
                    dispatch(push(redirectUrl));
                }
            });
    };
}
这减少了按照此处的建议将库添加到您的代码中的需要,并且还可以像redux-history-transitions 中所做的那样,将您的操作与其重定向很好地协同定位。
这是我的商店的样子:
import { createStore, applyMiddleware } from 'redux';
import rootReducer from '../reducers';
import thunk from 'redux-thunk';
import api from '../middleware/api';
import { routerMiddleware } from 'react-router-redux';
export default function configureStore(initialState, browserHistory) {
    const store = createStore(
        rootReducer,
        initialState,
        applyMiddleware(thunk, api, routerMiddleware(browserHistory))
    );
    return store;
}