代码之家  ›  专栏  ›  技术社区  ›  Marzieh Mousavi

如何在使用react路由器的路由中使用阵列

  •  1
  • Marzieh Mousavi  · 技术社区  · 3 年前

    function App() {
      return (
        <Router>
          <Header />
          <Container >
            <Switch>
    
              <Route exact path='/' component={Home}  />
    
              <Route path='/categories/(cat1|cat2|cat3|cat4|cat5|cat6)' component={itemList} />
    
              <Route path="*" component={notFound} />
    
            </Switch>
          </Container>
          <Footer />
        </Router>
      );
    }
    

    const itemCategories = ['cat1','cat2','cat3','cat4','cat5','cat6'];
    

    项目列表 路由

    path='/categories/(cat1|cat2|cat3|cat4|cat5|cat6)'
    
    2 回复  |  直到 3 年前
        1
  •  1
  •   Drew Reese    3 年前

    如果我理解您的问题,您希望渲染处理多个类别的路由。

    1. 任何 类别值。

      <Route path='/categories/:category' component={itemList} /> 
      
    2. 使用路径数组渲染单个管线。这允许您处理特定允许的类别。这导致 path={["/categories/cat1", "/categories/cat2", ... , "/categories/cat6"]} .

      <Route
        path={itemCategories.map(cat => `/categories/${cat}`)}
        component={itemList}
      />
      
    3. path='/categories/(cat1|cat2|cat3|cat4|cat5|cat6)' 正如你所寻找的。

      <Route
        path={`/categories/(${itemCategories.map((cat) => cat).join("|")})`}
        component={ItemList}
      />
      
    4. 为每个类别渲染一条管线。这允许您处理特定允许的类别,但基本上与 Route 组成部分。

      {
        itemCategories.map(cat => (
          <Route key={cat} path={`/categories/${cat}`} component={itemList} />
        ))
      }
      

    类似类别/cat7未找到页面将出现。

        2
  •  0
  •   Nitsan Cohen    3 年前

    可以使用:将其设置为动态路由,如下所示:

    <Route path="/categories/:cat" component={itemList} />
    

    然后根据用户的选择渲染路由

     {itemCategories.map(route => {
                 return <Route path=`/categories/${route}}` component={itemList}/>
               }}