React Router 不匹配嵌套路由
React Router not matching a nested route
我在使用 React Router 时遇到了一个小问题。我有以下路线配置:
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory}>
<Route path="/" component={ProjectManagerApp}>
<IndexRoute component={MainDashboard} />
<Route path='/projects/:id' component={ProjectView}>
<IndexRoute component={ProjectPanel} />
<Route path='/todos' component={ProjectTodos} />
</Route>
<Route path='*' component={NotFound} />
</Route>
</Router>
</Provider>
,
document.getElementById('app')
);
问题出在嵌套在 "ProjectView" 中的路由。 IndexRoute 正在工作,因此,当我访问“http://localhost:3000/projects/38d38234-5bdb-474a-8db8-6206cefe3e87", for example, the Project Panel component is rendered. But when I access "http://localhost:3000/projects/38d38234-5bdb-474a-8db8-6206cefe3e87/todos”时,它落在 NotFound 路由上。其他所有路线均正常工作。我正在使用 React Router 3。有人可以帮我吗?
谢谢
您使用 trailing /
指定的所有路由都将相对于 root,因此
<Route path='/todos' component={ProjectTodos} />
可以通过 http://localhost:8080/todos
事件访问,但它是嵌套路由
要以您想要的方式访问,请删除尾随 /
。像
这样指定你的路线
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory}>
<Route path="/" component={ProjectManagerApp}>
<IndexRoute component={MainDashboard} />
<Route path='projects/:id/' component={ProjectView}>
<IndexRoute component={ProjectPanel} />
<Route path='todos' component={ProjectTodos} />
</Route>
<Route path='*' component={NotFound} />
</Route>
</Router>
</Provider>
,
document.getElementById('app')
);
我在使用 React Router 时遇到了一个小问题。我有以下路线配置:
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory}>
<Route path="/" component={ProjectManagerApp}>
<IndexRoute component={MainDashboard} />
<Route path='/projects/:id' component={ProjectView}>
<IndexRoute component={ProjectPanel} />
<Route path='/todos' component={ProjectTodos} />
</Route>
<Route path='*' component={NotFound} />
</Route>
</Router>
</Provider>
,
document.getElementById('app')
);
问题出在嵌套在 "ProjectView" 中的路由。 IndexRoute 正在工作,因此,当我访问“http://localhost:3000/projects/38d38234-5bdb-474a-8db8-6206cefe3e87", for example, the Project Panel component is rendered. But when I access "http://localhost:3000/projects/38d38234-5bdb-474a-8db8-6206cefe3e87/todos”时,它落在 NotFound 路由上。其他所有路线均正常工作。我正在使用 React Router 3。有人可以帮我吗?
谢谢
您使用 trailing /
指定的所有路由都将相对于 root,因此
<Route path='/todos' component={ProjectTodos} />
可以通过 http://localhost:8080/todos
事件访问,但它是嵌套路由
要以您想要的方式访问,请删除尾随 /
。像
ReactDOM.render(
<Provider store={store}>
<Router history={browserHistory}>
<Route path="/" component={ProjectManagerApp}>
<IndexRoute component={MainDashboard} />
<Route path='projects/:id/' component={ProjectView}>
<IndexRoute component={ProjectPanel} />
<Route path='todos' component={ProjectTodos} />
</Route>
<Route path='*' component={NotFound} />
</Route>
</Router>
</Provider>
,
document.getElementById('app')
);