我使用[^#]+
并且我找不到解决方法来捕获服务器端渲染上的react-router-redux@5.0.0-alpha.9
网址。
用例:
<Redirect>
将用户发送到登录路由。<Redirect>
将用户发送到主私人路由。现在重定向正在浏览器中发生,但提供一种捕获<Redirect>
URL并从服务器发送正确重定向的方法会很棒。
我希望做一些与<Redirect>
解决方案类似的事情(使用<StaticRouter>
与context
一起使用)
<ConnectedRouter>
我也试过了import { ConnectedRouter } from 'react-router-redux';
const context = {};
const app = renderToString(
<Provider store={store}>
<ConnectedRouter history={history} isSSR context={context}>
<Application />
</ConnectedRouter>
</Provider>
);
if (context.url) {
const HTTP_FOUND = 302;
res.writeHead(HTTP_FOUND, { Location: context.url });
res.end();
}
并且没有触发位置更改。
history.listen
答案 0 :(得分:0)
history.listen
未被触发,因为<Redirect>
组件在SSR期间和ConnectedRouter
期间在服务器上使用时,由于ConnectedRouter
未提供所需内容而无法执行任何操作staticContext
。
有关此问题的讨论,请查看https://github.com/ReactTraining/react-router/pull/5323。
似乎正确的解决方案是在SSR期间不使用ConnectedRouter
,而是使用StaticRouter
并调度您自己的初始LOCATION_CHANGE
操作以使商店与当前位置。
有关此问题的详细评论,请参阅https://github.com/ReactTraining/react-router/issues/5333#issuecomment-315737132。