簡體   English   中英

嵌套路由鏈接不起作用 React Router

[英]Nested route link not working React Router

我在 ReactJS 上建立了我的網站作為 SPA。 我正在嘗試使用 React Router v.5.2.0。 我有一個名為 ToDoList.js 的示例應用程序,它應該位於以下投資組合頁面的 URL 中。 出於某種原因,它在我的本地主機上運行良好,但當我將它部署到 Netlifly 並托管在我的 Github 上時就不行了。 當它住在這里時,它似乎不起作用。 瀏覽器上的后退按鈕似乎也無法正常工作。

投資組合.js:

<Link to="/portfolio/todo-list">here</Link>

瀏覽器中的URL更新為右邊的URL,但不加載組件。 在我的 App.js 文件中,我有 2 種類型的路線,因此示例應用程序(待辦事項列表)不顯示頂部導航。 有用

應用程序,js:

function App() {
  return (
    <BrowserRouter>
      <div className="App">
          <Switch>
            <MainRoute exact path="/" component={Home} />
            <MainRoute exact path="/about" component={About} />
            <MainRoute exact path="/portfolio" component={Portfolio} />
            <MainRoute exact path="/contact" component={Contact} />
            <PortfolioRoute exact path="/portfolio/todo-list" component={ToDoList} />
          </Switch>
      </div>
    </BrowserRouter>
  );
}

export const MainRoute = ({ component: Component, ...rest}) => {
  return(
    <Route {...rest} component={(props) => (
      <>
        <TopNav />
        <Container fluid>
          <Row className="content-row">
            <Component {...props} />
          </Row>
        </Container>
        <Gradient />
      </>
    )} />
  );
};

export const PortfolioRoute = ({ component: Component, ...rest}) => {
  return(
    <Route {...rest} component={(props) => (
      <>
        <Component {...props} />
      </>
    )} />
  );
};

export default App;

/portfolio路由上的所有端點都需要在一個地方處理,否則 ReactRouter 無法處理嵌套,因為它首先選擇了 Main 。 此處查看有關嵌套的文檔演示


此外,為了直接鏈接到https://www.aubreyhlaverty.com/portfolio/todo-list有效,您應該將200重定向添加到您的 Netlify _redirects文件,如下所示 也可能對您的其他問題有所幫助。

/* /index.html 200

暫無
暫無

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

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