首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BrowserRouter React组件显示主菜单和辅助菜单

使用BrowserRouter React组件显示主菜单和辅助菜单
EN

Stack Overflow用户
提问于 2021-12-15 15:51:55
回答 1查看 80关注 0票数 1

我希望在用户复制后显示一个辅助菜单,该选项是主菜单的一部分,到目前为止,在循环之后,辅助控件没有显示。

这是我的主菜:

代码语言:javascript
复制
import React from "react";
import { BrowserRouter, Route, Link, Switch, Redirect } from "react-router-dom";
import Products from "../components/Products/Products";
import Welcome from "../components/Products/Welcome";
import VerQuotes from "../components/Quotes/VerQuotes";

const MenuApps = () => {
  return (
    <div>
      <main>
        <BrowserRouter>
          <MainHeader />
          <Switch>
            <Route path="/" exact>
              <Redirect to="/welcome" />
            </Route>
            <Route path="/welcome">
              <Welcome />
            </Route>
            {/* exact es un parametro que permite distinguir que recurso mostrar */ }
            <Route path="/products" exact>
              <Products />
            </Route>            
            <Route path="/products/:productId">
              <ProductDetail />
            </Route>
            <Route path="/verquotes">
              <VerQuotes />
            </Route>
          </Switch>
        </BrowserRouter>
      </main>
    </div>
  );
};

export default MenuApps;

这是第二个菜单:

代码语言:javascript
复制
import { Route, Switch, BrowserRouter, Redirect } from "react-router-dom";
import AllQuotes from "./AllQuotes";
import NewQuote from "./NewQuote";
import QuoteDetail from "./QuoteDetail";

function VerQuotes() {
  return (
    <BrowserRouter>
      <Switch>
        <Route path="/" exact>
          <Redirect to="/quotes" />
        </Route>
          {/* si no pongo exact no se renderiza la segunda opcion */}
        <Route path="/quotes" exact>
          <AllQuotes />
        </Route>
        <Route path="/quotes/:quoteId">
          <QuoteDetail />
        </Route>
        <Route path="/new-quote">
          <NewQuote />
        </Route>
      </Switch>
    </BrowserRouter>
  );
};

export default VerQuotes;

我的问题是:我缺少什么来显示辅助菜单?

非常感谢你的评论

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-15 16:18:52

整个应用程序只需要一个路由器,所以BrowserRouterVerQuotes中是不必要的。react-router-dom v5也不使用相对链接/路径,因此VerQuotes中的所有嵌套路由都需要构建在现有的"/verquotes"路径上。

另外,请记住,在Switch组件中,路由路径的特殊性和顺序非常重要!将路由从更特定的路径排序到较不特定的路径,这样更具体的路径就有机会首先被匹配和呈现。

代码语言:javascript
复制
import { Route, Switch, Redirect, useRouteMatch } from "react-router-dom";
import AllQuotes from "./AllQuotes";
import NewQuote from "./NewQuote";
import QuoteDetail from "./QuoteDetail";

function VerQuotes() {
  const { path, url } = useRouteMatch();

  return (
    <Switch>
      <Route path={`${path}/quotes/:quoteId`}>
        <QuoteDetail />
      </Route>
      {/* si no pongo exact no se renderiza la segunda opcion */}
      <Route path={`${path}/quotes`}>
        <AllQuotes />
      </Route>
      <Route path={`${path}/new-quote`}>
        <NewQuote />
      </Route>
      <Redirect from={path} to={`${path}/quotes`} />
    </Switch>
  );
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70366607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档