Joh*_*ohn 4 reactjs react-router
我正在写一个React-on-Rails(第5版)应用程序并遇到了问题.当我访问路径时accounts/:account_id/letters/new,React-Router正在安装EmailShowComponent,当我想要它安装时EmailSendComponent.
这是我的app.js文件:
<Router history={browserHistory}>
<Route path="/accounts/:id" component={AccountShowContainer} />
<Route path="/accounts/:account_id/letters/:id" component={EmailShowComponent} />
<Route path="/accounts/:account_id/letters/new" component={EmailSendComponent} />
</Router>
Run Code Online (Sandbox Code Playgroud)
这是我的main.js文件:
import 'babel-polyfill';
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
$(function(){
ReactDOM.render(
<App />,
document.getElementById('app')
)
});
Run Code Online (Sandbox Code Playgroud)
我"<div id="app">"在每个相关的html页面中都放置了标签,为路由器生成这些路径.
知道是什么原因引起的吗?
问题是路径/accounts/:account_id/letters/new也满足路径/accounts/:account_id/letters/:id.差异就在id于此"new".
要解决此问题,只需交换路线的顺序:
<Router history={browserHistory}>
<Route path="/accounts/:id" component={AccountShowContainer} />
<Route path="/accounts/:account_id/letters/new" component={EmailSendComponent} />
<Route path="/accounts/:account_id/letters/:id" component={EmailShowComponent} />
</Router>
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请查看官方文档中的"优先级"部分:
最后,路由算法尝试按照它们定义的顺序(从上到下)匹配路由.因此,当你有两个兄弟路线时,你应该确保第一个与
path兄弟姐妹可以匹配的所有可能的s匹配.例如,不要这样做:Run Code Online (Sandbox Code Playgroud)<Route path="/comments" ... /> <Redirect from="/comments" ... />
| 归档时间: |
|
| 查看次数: |
678 次 |
| 最近记录: |