You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React路由报错:[Register]不是<Route>组件,求解决方案

React Router 错误排查与解决:[Register] 不是组件

错误原因

React Router v6 要求<Route>组件必须通过element属性指定要渲染的内容,不能直接将组件或条件渲染逻辑作为<Route>的子元素。你当前的写法违反了这一API规范,导致抛出错误。

解决方法

将原本放在<Route>子节点的内容迁移到element属性中,同时注意v6不再需要exact属性(默认精确匹配)。修改后的代码如下:

function App() {
  const { user } = useContext(AuthContext);
  return (
    <Routes>
      <Route path="/" element={user ? <Home /> : <Register />} />
      <Route path="/login" element={user ? <Navigate to="/" /> : <Login />} />
      <Route path="/register" element={user ? <Navigate to="/" /> : <Register />} />
      <Route path="/profile/:username" element={<Profile />} />
    </Routes>
  );
}

export default App;

补充说明

  • React Router v6 重构了路由体系,element是定义路由渲染内容的标准方式。
  • 若需要实现路由保护(比如已登录用户无法访问登录/注册页),也可以封装一个专用的路由保护组件,复用逻辑会更清晰:
// 示例:路由保护组件
function ProtectedRoute({ children }) {
  const { user } = useContext(AuthContext);
  return user ? children : <Navigate to="/login" />;
}

// 使用方式
<Route path="/" element={<ProtectedRoute><Home /></ProtectedRoute>} />

内容的提问来源于stack exchange,提问作者Hmila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:25:30