使用exact
更改此
<Route path="/user/:user_id" component={UserComponent} onEnter={fetchUser} />
對此
<Route exact path="/user/:user_id" component={UserComponent} onEnter={fetchUser} />
我猜你仍然呈現UserComponent
即使你使用其他的路徑,是因爲它共享相同的/user
路徑
[編輯]
問題是因爲react-router沒有檢測到它是數字或字符也許你可以區分路徑?這樣
<Route path="/user/id/:user_id" component={UserComponent} onEnter={fetchUser} />
<Route path="/user/name/:user_name" component={ProfileComponent} onEnter={fetchProfile} />
[更新]
我的解決方法是檢查PARAMS型
由於您使用路由器的反應,你v2.8.1可能宣佈一個部件的包裝材料來決定哪些組件應呈現。
function CheckUserComponent(props) {
if (!Number.isNaN(parseFloat(props.match.params.user)) && Number.isFinite(props.match.params.user)) {
return <UserComponent />
} else {
return <ProfileComponent />
}
}
<Route path="/user/:user" component={CheckUserComponent} onEnter={fetchUser} />
什麼是使用{fetchUser}你能否給我一些代碼 – Anil