解决“Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element......“报错

在学习React路由中遇到的问题:

Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.

经过半天的折腾,最终发现是react-router-dom版本的问题,你可以去package.json中查看react-router-dom的版本,如果是6.x.x,那么你多半会遇到这个问题。
在这里插入图片描述
以下是解决方法:
初始报错代码如下:

// 导入组件:
import { BrowserRouter as Router, Route, Link } from "react-router-dom";
const First = () => <p>页面一的内容</p>;
// 使用Router包裹整个应用
const App = () => (
  <Router>
    <div>
      <h1>React路由基础</h1>
      {/* 指定路由入口 */}
      <Link to="/first"> 页面一 </Link>
      {/* 指定路由出口 */}
      <Route path="/first" component={First}></Route>
    </div>
  </Router>
);

解决方案:
step1:
导入组件中加入routes

import { BrowserRouter as Router, Route, Routes, Link } from "react-router-dom";

step2:
使用routes包裹route

 <Routes>
        <Route path="/first" component={First}></Route>
 </Routes>

运行:
在这里插入图片描述
然而又出现了另一个问题:在点击链接的时候无法跳转
解决办法:
component改为element,组件使用标签形式的写法:

<Route path="/first" element={<First />}></Route>

完整代码如下:

// 导入组件:
import { BrowserRouter as Router, Route, Routes, Link } from "react-router-dom";

const First = () => <p>页面一的内容</p>;

// 使用Router包裹整个应用
const App = () => (
  <Router>
    <div>
      <h1>React路由基础</h1>
      {/* 指定路由入口 */}
      <Link to="/first"> 页面一 </Link>
      {/* 指定路由出口 */}
      <Routes>
        <Route path="/first" element={<First />}></Route>
      </Routes>
    </div>
  </Router>
);

点击链接可以显示内容了在这里插入图片描述
至此,问题解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值