考虑以下:
var AppRoutes = [
<Route handler={App} someProp="defaultProp">
<Route path="/" handler={Page} />
</Route>,
<Route handler={App} someProp="defaultProp">
<Route path="/" handler={Header} >
<Route path="/withheader" handler={Page} />
</Route>
</Route>,
<Route handler={App} someProp="defaultProp">
<Route path=":area" handler={Area} />
<Route path=":area/:city" handler={Area} />
<Route path=":area/:city/:locale" handler={Area} />
<Route path=":area/:city/:locale/:type" handler={Area} />
</Route>
];
Run Code Online (Sandbox Code Playgroud)
我有一个App Template,一个HeaderTemplate和一个具有相同处理程序的参数化路由集(在App模板中).我希望能够在找不到东西时提供404路线.例如,/ CA/SanFrancisco应该由Area找到并处理,而/ SanFranciscoz应该是404.
这是我如何快速测试路线.
['', '/', '/withheader', '/SanFranciscoz', '/ca', '/CA', '/CA/SanFrancisco', '/CA/SanFrancisco/LowerHaight', '/CA/SanFrancisco/LowerHaight/condo'].forEach(function(path){
Router.run(AppRoutes, path, function(Handler, state){
var output = React.renderToString(<Handler/>);
console.log(output, '\n');
});
});
Run Code Online (Sandbox Code Playgroud)
问题是/ SanFranciscoz总是由Area页面处理,但我希望它为404.另外,如果我将NotFoundRoute添加到第一个路由配置,所有Area页面404.
<Route handler={App} someProp="defaultProp">
<Route path="/" …Run Code Online (Sandbox Code Playgroud) react-router ×1