Рассмотрим следующее:
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>
];
У меня есть шаблон приложения, набор заголовков и набор параметров с таким же обработчиком (в шаблоне приложения). Я хочу иметь возможность обслуживать 404 маршрута, когда что-то не найдено. Например, /CA/SanFrancisco следует найти и обработать по области, тогда как /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');
});
});
Проблема заключается в том, что /SanFranciscoz всегда обрабатывается на странице Area, но я хочу, чтобы она была 404. Кроме того, если я добавлю NotFoundRoute в первую конфигурацию маршрута, все страницы 404 области.
<Route handler={App} someProp="defaultProp">
<Route path="/" handler={Page} />
<NotFoundRoute handler={NotFound} />
</Route>,
Что я делаю неправильно?
Вот суть, которую можно загрузить и экспериментировать.