React项目基础搭建过程中遇到的问题

由于React Router版本的不同导致的问题 

报错信息如下:

 Line 9:18:   'Switch' is not defined    react/jsx-no-undef
 Line 13:88:  'Redirect' is not defined  react/jsx-no-undef

 问题出现的原因:

对于导入 'Switch' is not defined'Redirect' is not defined 的错误,这些是由于在 React Router 版本 6 中名称和导入方式发生了变化所致。

在 React Router 6 中,Switch 组件已被移除,而'Redirect' 组件已被重命名为 useNavigate。为了解决这些问题,你需要根据 React Router 6 的更新进行相应的修改。

解决方案:

1.在文件的顶部,导入适应 React Router6 的组件 

2.替换代码中的<Switch>组件,在React Router6中,可以使用 <Routes>组件来代替<Switch>。将所有的<Route>组件包裹在<Routes>组件中。

例如,将代码中类似一下方式的<Switch>代码:

 替换为以下形式的<Routes>代码

 注意,用 <Navigate> 组件替代了 Redirect 组件,并使用 to 属性指定了重定向的路径

React组件内容渲染不出来

控制台提示信息

index.js:7 Matched leaf route at location "/" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page

 组件渲染部分的代码如下

 问题出现的原因

 报错信息Matched leaf route at location "/" does not have an element or Component 意味着在根路径 / 匹配到了一个叶子路由,但是这个路由没有指定要渲染的元素或组件,导致默认情况下会渲染一个空的 <Outlet />,从而导致页面为空。

检查路由配置发现根路径/ 的<Route>使用了 render prop 来动态决定要渲染的内容,那么问题就可能出现在这里。首先,路由配置应该是互斥的,也就是不应该有两个路由同时匹配到相同的路径。在这个配置中,当根路径匹配到的时候,它要么渲染<NewsSandBox>组件,要么渲染一个重定向倒/login的路由。这样会导致冲突和不确定的行为。

解决方法就是要将根路径的渲染逻辑分成两个独立的路由,一个用于显示受保护的内容,一个用户重定向倒登录页面,更改过后的代码如下

 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值