Rozważ następujące:
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>
];
Mam szablon aplikacji, szablon HeaderTemplate i sparametryzowany zestaw tras z tym samym programem obsługi (w szablonie aplikacji). Chcę mieć możliwość obsługi tras 404, gdy czegoś nie znaleziono. Na przykład / CA / SanFrancisco powinno być znalezione i obsługiwane przez Area, a / SanFranciscoz - 404.
Oto jak szybko testuję trasy.
['', '/', '/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');
});
});
Problem polega na tym, że / SanFranciscoz jest zawsze obsługiwany przez stronę Area, ale chcę, aby 404. Ponadto, jeśli dodam NotFoundRoute do pierwszej konfiguracji trasy, wszystkie strony obszaru 404.
<Route handler={App} someProp="defaultProp">
<Route path="/" handler={Page} />
<NotFoundRoute handler={NotFound} />
</Route>,
Co ja robię źle?
Oto sedno, które można pobrać i poeksperymentować.