我正在构建多语言网站,其中语言首选项是URL的一部分,例如
http://example.com/<somepage> (Russian, default)
http://example.com/en/<somepage> (English)
http://example.com/jp/<somepage> (Japanese)
http://example.com/../ (etc)
Run Code Online (Sandbox Code Playgroud)
当我为所有语言使用前缀时,一切都很好:
<Route path="/:lang">
<Route path="somepage" component={Somepage}/>
</Route>
Run Code Online (Sandbox Code Playgroud)
但是对于默认语言,我不需要在url中包含语言,如示例所示.在可焊接路由器中,可以通过在路径中使用regexp来解决:
path: '/:lang([a-z]{2})?/<somepage>'
Run Code Online (Sandbox Code Playgroud)
但它在反应路由器中不起作用,因为路径必须是字符串,而不是正则表达式.任何想法如何处理这个用例?
您是否尝试过复制路线?到目前为止似乎对我有用。
var innerRoutes = (
<Route>
<Route path="somepage" component={Somepage}/>
<Route path="otherpage" component={Otherpage}/>
</Route>
);
var routes = (
<Route path="/" component={App}>
{innerRoutes}
<Route path=":lang">
{innerRoutes}
</Route>
</Route>
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4814 次 |
| 最近记录: |