react-router-dom 用高阶组件的时候碰到一些问题?

发布于 2022-09-13 01:13:14 字数 374 浏览 22 评论 0

高阶组件
const PrivateRoute = ()=>{
   return <Route path='/'><Home/></Route>
}
使用
<Swith>
   <Route path='/'><Home/></Route>//第一种方式
   <PrivateRoute />//第二种方式
</Swith>

这两种方式在使用上有什么区别,主要是想在 PrivateRoute 写一些逻辑。
但是好像不行,匹配不上

其他路由的都可以 就是 '/' 不行 ,实在脑壳疼

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

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

发布评论

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

评论(2

抠脚大汉 2022-09-20 01:13:14

理论上Switch组件和Route组件必须是直接上下级关系,否则可能会读取不到路由。所以第二种方法显然是不对的。至于你说的“/”不行我不太理解是怎么个不行法,是有报错还是不能匹配到正确的路由组件

耶耶耶 2022-09-20 01:13:14

问题已经解决,第二种方法是可行的。
问题出现在 exact 这个参数上。子路由设置为false 父路由设置为true

    const routes = [
        { path: '/', component: <component/>, exact: true },
        { path: '/a', component: <component/>, exact: true },
        { path: '/b', component: <component/>, exact: true },
    ]
 <Switch>
     {
      routes.map((item: any, idx: number) =>
           <PrivateRoute
            exact={item.exact}
            path={item.path}
            content={item.component}
            key={idx}  )
       }
   </Switch>
     
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文