Moe*_*ler 5 reactjs react-router
有没有办法用react-router来模块化你的路线,然后只需导入它们并组装它们?
所以不是这样的:
<Router>
<Route path="/" component={App}>
<Route path="inbox" component={Inbox}>
<Route path="messages/" component={AllMessages} />
<Route path="messages/:id" component={Message} />
</Route>
<Route path="calendar" component={Calendar}>
<Route path="year" component={Year}>
<Route path="month" component={Month}>
<Route path="week" component={Week}/>
</Route>
</Route>
</Route>
</Route>
</Router>
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
let InboxRoutes = React.createClass({
render: function(){
return (
<Route path="inbox" component={Inbox}>
<Route path="messages/" component={AllMessages} />
<Route path="messages/:id" component={Message} />
</Route>
);
}
});
<Router>
<Route path="/" component={App}>
<InboxRoutes/>
<CalendarRoutes/>
</Route>
</Router>
Run Code Online (Sandbox Code Playgroud)
我明白了:
Warning: Location did not match any routes
一种解决方案是将它们包装在变量中:
let InboxRoutes = (
<Route path="inbox" component={Inbox}>
<Route path="messages/" component={AllMessages} />
<Route path="messages/:id" component={Message} />
</Route>
)
let CalendarRoutes = (/* define routes like above */)
let routes = (
<Router>
<Route path="/" component={App}>
{InboxRoutes}
{CalendarRoutes}
</Route>
</Router>
)
render(routes, document.getElementById("app"))
Run Code Online (Sandbox Code Playgroud)
注意:您应该记住放入父路由的render方法 {this.props.children}
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |