Considérer ce qui suit:
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>
];
J'ai un modèle d'application, un modèle d'en-tête et un ensemble de routes paramétrées avec le même gestionnaire (dans le modèle d'application). Je veux pouvoir desservir 404 routes lorsque quelque chose n'est pas trouvé. Par exemple, / CA / SanFrancisco doit être trouvé et géré par Area, alors que / SanFranciscoz doit être 404.
Voici comment je teste rapidement les itinéraires.
['', '/', '/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');
});
});
Le problème est que / SanFranciscoz est toujours géré par la page Area, mais je veux qu'il soit 404. De plus, si j'ajoute un NotFoundRoute à la première configuration d'itinéraire, toutes les pages Area 404.
<Route handler={App} someProp="defaultProp">
<Route path="/" handler={Page} />
<NotFoundRoute handler={NotFound} />
</Route>,
Qu'est-ce que je fais mal?
Voici un résumé qui peut être téléchargé et expérimenté.