亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ReactJS 路由頁面刷新

ReactJS 路由頁面刷新

慕雪6442864 2023-12-14 14:12:58
目前正在使用 ReactJS 構建一個小型 Web 應用程序。我有以下父函數:    const Main = () => {        return (            <div className="dialog-base">                <BrowserRouter>                    <Switch>                        <Route exact path="/login" component={Login}></Route>                        <Route exact path="/login/forgot_password" component={ForgotPwd}></Route>                        <Route exact path="/login/reset_password/:key" component={ResetPwd}></Route>                        <Route exact path="/portal" component={Portal}></Route>                    </Switch>                </BrowserRouter>            </div>        );     }以下是“Portal”組件:class Portal extends React.Component {    render = () => {        return (            <BrowserRouter basename="/main">                 <div className="navmenu">                     <NavLink to="messaging" activeClassName="selected">Messaging</NavLink>                     <NavLink to="files" activeClassName="selected"></NavLink>                     <NavLink to="payledger" activeClassName="selected"></NavLink>                 </div>                 <div className="apparea">                     <Switch>                         <Route path="/messaging" component={Messaging}></Route>                         <Route path="/files" component={Files}></Route>                         <Route path="/payledger" component={PayLedger}></Route>                     </Switch>                 </div>            </BrowserRouter>        );    }}當加載門戶組件并刷新網頁時,頁面變為空白。我假設這與嵌套路由有關?任何有關如何修復它的幫助將不勝感激。
查看完整描述

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>

      );

  }

}


查看完整回答
反對 回復 2023-12-14
  • 1 回答
  • 0 關注
  • 242 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號