我开始在我的应用程序中使用 react-router 并且我注意到当它在 URL ( /url/
)末尾有一个斜杠时它不起作用。我搜索了更多相关信息,阅读了所有文档和 react-router 问题,并尝试使用<Redirect from='/*/' to="/*" />
,但这不是一个好的解决方案,因为它也不起作用。因此,阅读更多内容后,我发现了/?
在 URL 末尾插入的建议,但它仍然无效。
route.js 的代码:
export default (
<Route path="/" component={App}>
<IndexRoute component={ProfileFillComponents} />
<Route path="/seguro-residencia" handler={require('./components/Forms/Residencial/ProfileFill/profileFillComponents')} />
<Route path="/seguro-residencia/informacoes-pessoais" component={CotationNumber} />
</Route>
)
index.js 的代码:
render((<Router history={browserHistory} routes={routes} />), document.getElementById('root'));
搜索更多,我发现一个人做了一个函数来强制在 URL 上添加斜杠,我决定做相反的事情,强迫没有它。
使用无尾随斜线函数更新 routes.js 代码:
export default (
<Route onEnter={forceTrailingSlash} onChange={forceTrailingSlashOnChange}>
<Route path="/" component={App}>
<IndexRoute component={ProfileFillComponents} />
<Route path="/seguro-residencia" handler={require('./components/Forms/Residencial/ProfileFill/profileFillComponents')} />
<Route path="/seguro-residencia/informacoes-pessoais" component={CotationNumber} />
</Route>
</Route>
)
function forceNoTrailingSlash(nextState, replace) {
const path = nextState.location.pathname;
if (path.slice(-1) === '/') {
replace({
...nextState.location,
pathname: path.slice(1,path.lastIndexOf('/')-1)
});
}
}
function forceNoTrailingSlashOnChange(prevState, nextState, replace) {
forceNoTrailingSlash(nextState, replace);
}
这再次不起作用!我需要使这个 URL 尽可能地更友好,并且我希望 URL 末尾没有任何尾部斜杠。有什么建议我怎么做?为什么Redirect
在这种情况下不起作用?