簡體   English   中英

React 路由器 dom 沒有渲染組件

[英]React router dom is not rendering a component

這是我的代碼

function App() {
  return (
    <div className="app">
      <BrowserRouter>
        <Header></Header>
        <Routes>
          <Route path='/' exact element={<Home />} />
          <Route path='/movie/:imdbID' element={<MovieDetails />} />
          <Route element={<PageNotFound />} />
        </Routes>
        <Footer />
      </BrowserRouter>
    </div>
  );
}

我想要的是當我輸入無效的PageNotFound時顯示 PageNotFound。 但它永遠不會出現。 我嘗試將它放在頂部,在<Routes>之后,但結果相同。

您可以將*添加到路徑中,它將呈現。

function App() {
  return (
    <div className="app">
      <BrowserRouter>
        <Header></Header>
        <Routes>
          <Route path='/' exact element={<Home />} />
          <Route path='/movie/:imdbID' element={<MovieDetails />} />
          <Route exact path='*' element={<PageNotFound />} />
        </Routes>
        <Footer />
      </BrowserRouter>
    </div>
  );
}

react-router-dom@6中的路由順序無關緊要,因為路由現在使用路由路徑排名系統來匹配最合適的路徑。 路線現在也總是完全匹配,因此不再有任何exact道具。

匹配路徑的Route組件仍然需要一個path道具。 指定通配符"*"路徑以匹配任何更具體的路徑不匹配的任何內容。

<Route path="*" element={<PageNotFound />} />

請參閱如何在 react-router v6 中添加不匹配 (404) 路由

// use it in this way it will work 

function App() {
  return (
    <div className="app">
      <BrowserRouter>
        <Header></Header>

        <Routes>
          <Route   path='*' element={<PageNotFound />} />
          <Route path='/' exact element={<Home />} />
          <Route path='/movie/:imdbID' element={<MovieDetails />} />
         
        </Routes>
        <Footer />
      </BrowserRouter>
    </div>
  );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM