【发布时间】:2025-12-16 11:00:02
【问题描述】:
考虑以下几点:
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>
];
我有一个应用模板、一个 HeaderTemplate 和一组具有相同处理程序的参数化路由(在应用模板内)。当找不到东西时,我希望能够为 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');
});
});
问题是 /SanFranciscoz 始终由区域页面处理,但我希望它为 404。此外,如果我将 NotFoundRoute 添加到第一个路由配置,则所有区域页面都是 404。
<Route handler={App} someProp="defaultProp">
<Route path="/" handler={Page} />
<NotFoundRoute handler={NotFound} />
</Route>,
我做错了什么?
这是一个可以下载和试验的要点。
【问题讨论】:
-
供最终解决此问题的人将来参考,除了下面的正确答案,请阅读this article。我之前遇到过,我认为那个人解释得很好。
标签: javascript reactjs react-router