【发布时间】:2017-11-01 03:59:18
【问题描述】:
我是 redux 的初学者并创建通用的 react redux 应用程序。
这是在服务器端调度异步操作的任何选项,如服务器端的store.dispatch(actions.getOutput())。
getOutput 是一个 异步 动作,它在调用时获取一些 api 并更改 redux 上的状态。
我知道使用 redux-thunk 中间件在客户端调度它,但不了解服务器端的流程
let context = {},
status = 200;
const allReducers = combineReducers({
...reducers
});
const store = createStore(
allReducers,
compose(
applyMiddleware(thunkMiddleware, promise)
)
);
const preloadedStore = store.getState()
store.dispatch(actions.getStories());
const finalState = store.getState();
const ctx = ReactDomServer.renderToString(
<Provider store={store}>
<StaticRouter context={context} location={req.url}>
<App/>
</StaticRouter>
</Provider>
),
reactHelmet = ReactHelmet.renderStatic();
if(context.url){
return res.redirect(302, context.url);
}
if(context.status === 404){
status = 404;
}
let page = renderOutput(ctx, finalState, reactHelmet);
res.status(status).send(page);
【问题讨论】:
-
你可以试试redux-catch-promise,不过看起来很复杂。
标签: reactjs redux redux-thunk