【发布时间】:2016-11-10 13:11:26
【问题描述】:
我从服务器上的/clientpanel 目录为我的网站提供服务。所以我的网址是http://xxx.yy/clientpanel。这是我的客户端代码:
const history = useRouterHistory(createHistory)({
basename: "/clientpanel"
});
render(
<Router history={history} routes={routes}/>,
document.getElementById("root")
);
在客户端,一切正常。所有 url 都与/clientpanel 相关,但我对如何在服务器上完成这项工作有疑问。这是我的服务器端代码:
const history = useRouterHistory(createMemoryHistory)({
basename: "/clientpanel"
});
match({ routes, location: req.url, history}, (error, redirectLocation, renderProps) => {
if (renderProps) {
const html = renderToString(
<RouterContext {...renderProps}/>
);
res.send(renderFullPage(html))
}
});
在第一个页面加载时,我需要在 url 中省略 /clientpanel 才能完成这项工作,但是在首先单击 <Link> 后在客户端将 /clientpanel 添加到开头。如何让它在客户端和服务器端工作一致?
【问题讨论】:
-
好像
createMemoryHistory不支持basename。您可以从req.url中删除基本名称,它会起作用,但Links 仍然会损坏。
标签: javascript reactjs react-router server-side-rendering