【发布时间】:2016-05-14 05:51:49
【问题描述】:
我有一个使用 redux-router 的客户端应用程序。
我从我的 api 发送 user 页面的初始状态。
我的路线文件:
export default function ({ dispatch, getState }) {
function getUser(nextState, replaceState) {
dispatch(getUserData(nextState.params.id));
}
return (
<Route path="/" component={App}>
<Route path="user/:id" component={User} onEnter={getUser}/>
<Route path="*" component={NoMatch}/>
</Route>
);
}
}
所以在客户端上效果很好。
在getUserData 调度返回数据后,我想将我的标记呈现为字符串。
这就是我的服务器匹配和渲染(来自官方服务器渲染示例):
app.use((req, res) => {
const store = reduxReactRouter({ routes, createHistory: createMemoryHistory })(createStore)(reducer);
const query = qs.stringify(req.query);
const url = req.path + (query.length ? '?' + query : '');
store.dispatch(match(url, (error, redirectLocation, routerState) => {
if (error) {
console.error('Router error:', error);
res.status(500).send(error.message);
} else if (redirectLocation) {
res.redirect(302, redirectLocation.pathname + redirectLocation.search);
} else if (!routerState) {
res.status(400).send('Not Found');
} else {
res.status(200).send(getMarkup(store));
}
}));
});
是否可以在使用onEnter 时使其正常工作?
还是只在浏览器上触发?
将不胜感激任何帮助家伙! 谢谢
【问题讨论】:
标签: node.js express reactjs redux