解决react-router-dom V6路由嵌套时子路由无法显示的问题

父组件

class App extends Component {
  render() {
    return (
      <Router>
        <Routes>
          <Route path="/app" element={<ThisLayout />} />
        </Routes>
      </Router>
    );
  }
}

子组件ThisLayout下的代码

class ThisLayout extends Component {
  render() {
    return (
      <div className="App">
        <Layout>
        	<HeaderPage />
            <Routes>
                <Route path="/app/index" element={<ContentPage />} />
            </Routes>
        </Layout>
      </div>
    )
  }
};

http://localhost:3000/app会显示HeaderPage组件的内容
http://localhost:3000/app/index却没有显示ContentPage组件的内容。
经查验得知,在 v6 中,所有路由路径始终是完全匹配,不再像 v4/5 中那样匹配路径前缀。父/根路径需要指定 * 通配符,以便它们现在可以进行"前缀"匹配,所以解决办法是加上通配符*

父组件增加一行<Route path="/*" element={<ThisLayout />} />即可,修改如下

class App extends Component {
  render() {
    return (
      <Router>
        <Routes>
          <Route path="/*" element={<ThisLayout />} />
          <Route path="/app" element={<ThisLayout />} />
        </Routes>
      </Router>
    );
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖人称-杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值