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>
);
}
}
添加回答
举报