1 回答

TA貢獻1810條經驗 獲得超4個贊
你不需要兩個<BrowserRouter />
。<BrowserRouter />
只需在頂級組件中定義一個即可。在react-router-dom v4+中,它<Route />
就像一個常規組件,當路徑與URL匹配時,您可以在組件中使用它來渲染UI。
這是工作的codesandbox示例。確保不要放在exact
你的父路由上<Route />
,因為當你有像這樣的子路由時,/main/messaging
永遠<Route exact path="/main" />
不會渲染,因此該路由的子路由也無法渲染。
您保持<Main />
組件不變,但從exact
中刪除<Route path='/portal' />
并更改<Portal />
.
class Portal extends React.Component {
render = () => {
return (
<React.Fragment>
<div className="navmenu">
<NavLink to="/portal/messaging" activeClassName="selected">Messaging</NavLink>
<NavLink to="/portal/files" activeClassName="selected"></NavLink>
<NavLink to="/portal/payledger" activeClassName="selected"></NavLink>
</div>
<div className="apparea">
<Switch>
<Route path="/portal/messaging" component={Messaging}></Route>
<Route path="/portal/files" component={Files}></Route>
<Route path="/portal/payledger" component={PayLedger}></Route>
</Switch>
</div>
</React.Fragment>
);
}
}
添加回答
舉報