react router 嵌套路由 内层route找不到

发布于 2022-09-07 21:00:16 字数 1221 浏览 15 评论 0

题目描述

react-router 嵌套路由元素,子元素的相关内容加载不出来,而且整个地址无法匹配

题目来源及自己的思路

想用外层路由实现模板页、登录、404等页面,
在模板页内层用子路由实现内容的动态加载

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
//外层路由 App.js

render() {
    return (
        <Switch>
            <Route exact component={Home} path="/" />
            <Route component={Login} path="/login" />
            <Route component={NotFound} />
        </Switch>
    )
  }

//内层Home.js

render() {
        return (
            <Layout>
                <Header>Some Info.</Header>
                <Content>
                    <Switch>
                        <Route exact path="/" component={MyLayout} />
                        <Route path="/temperature/month" component={TemperatureMonth} />
                        <Route path="/temperature/day" component={TemperatureDay} />
                    </Switch>
                </Content>
            </Layout>
        );
    }

你期待的结果是什么?实际看到的错误信息又是什么?

输入http://127.0.0.1:3000/temperature/month,结果匹配到外层NotFound.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眉目亦如画i 2022-09-14 21:00:16
  1. 因为使用Switch标签包裹,route只会被渲染一个,/temperature/month 这个路由在App.js并没有匹配,所以就渲染了<Route component={NotFound} />。
  2. 为什么没有匹配 <Route exact component={Home} path="/" /> 这个? 因为是精准匹配,所以导致/temperature/month 无法匹配到这个组件。

如何解决?
1.调整一下Route顺序,去掉精准匹配,让/temperature/month匹配到Home组件

          <Route component={Login} path="/login" />
          <Route component={Home} path="/" />
          <Route component={NotFound} />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文