首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >响应路由器v4面包屑

响应路由器v4面包屑
EN

Stack Overflow用户
提问于 2017-10-11 12:47:39
回答 3查看 7.1K关注 0票数 3

我正在尝试实现为v4反应路由器面包屑

以下是我的路线:

代码语言:javascript
运行
复制
    const routes = {
      '/': 'Home',
      '/page1': 'Page 1',
      '/page2': 'Page 2'
    };

我可以使用这个库在我的应用程序中放置面包屑,但是我有以下问题:

Que.#1:

当我在面包屑中单击Home时,我可以看到http://localhost:8080的URL更改,但是浏览器仍然显示相同的页面。

Que.#2:

当我从Page1导航到Page1时,urlhttp://localhost:8080/page1更改为http://localhost:8080/page2

所以面包屑显示了对Home / Page 2的更改,而不是像Home / Page 1 / Page 2那样的更改。

我知道这可能是因为url的主机名后面只有/page2。但是,我能否实现这样的显示:Home / Page 1 / Page 2

下面是我的主App.jsx中的代码

代码语言:javascript
运行
复制
<Router>
  <div>
    <Link to="/"><div className="routerStyle"><Glyphicon glyph="home" /></div></Link>
    <Route exact path="/" component={LandingPage}/>
    <Route path="/page1" component={Page1}/>
    <Route path="/page2" component={Page2}/>
  </div>
</Router>

如果我使用“像下面这样”来满足面包屑的需求,那么我的page2就会在page1下面呈现:

代码语言:javascript
运行
复制
    <Router>
      <div>
        <Link to="/"><div className="routerStyle"><Glyphicon glyph="home" /></div></Link>
        <Route exact path="/" component={LandingPage}/>
        <Route path="/page1" component={Page1}/>
        <Route path="/page1/page2" component={Page2}/>
      </div>
    </Router>

答案:

Que.#1:不需要将<Breadcrumbs ..../>元素封装在应用程序的每个组件内的<Router>元素中。这可能是因为在每个组件中包含<Router>元素导致了Router元素的“嵌套”(注意,我们在登陆页面中也有Router标记),这与react router v4不兼容。

Que.#2:指的是在这里正式标记的答案(由下面的palsrealm回答)

EN

Stack Overflow用户

回答已采纳

发布于 2017-10-11 15:03:19

你的面包屑是基于链接的,它们按照设计的方式工作。要显示页面,需要设置一个Switch,其中包含Route,当路径发生变化时,它将加载适当的组件。有点像

代码语言:javascript
运行
复制
<Switch> 
    <Route path='/' component={Home}/>
    <Route path='/page1' component={Page1}/>
    <Route path='/page2' component={Page2}/>
</Switch>

如果您想让面包屑显示给Home/Page1/Page2,您的routes应该是'/page1/page2' : 'Page 2'Route也应该相应地改变。

编辑:您的Router应该是

代码语言:javascript
运行
复制
 <Router>
      <div>
        <Link to="/"><div className="routerStyle"><Glyphicon glyph="home" /></div></Link>
        <Switch>
        <Route exact path="/" component={LandingPage}/>
        <Route exact path="/page1" component={Page1}/>
        <Route path="/page1/page2" component={Page2}/>
        </Switch>
      </div>
    </Router>
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46688592

复制
相关文章

相似问题

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