在React Router v6升级过程中,路由懒加载配置是常见的痛点。本文分享一个典型的配置错误及解决方案。
问题现象:使用lazy属性时出现Cannot read property 'createElement' of undefined错误。
复现步骤:
- 创建懒加载组件:
const LazyComponent = lazy(() => import('./LazyPage')); - 在路由中使用:
<Route path="/lazy" element={<LazyComponent />} /> - 报错信息:
TypeError: Cannot read property 'createElement' of undefined
核心问题:v6中需要在<Suspense>包裹下使用懒加载组件,且必须在<RouterProvider>上下文中。
正确配置方案:
import { createBrowserRouter, RouterProvider } from 'react-router-dom';
const router = createBrowserRouter([
{
path: "/",
element: (
<Suspense fallback="加载中...">
<LazyComponent />
</Suspense>
)
}
]);
// 在App组件中
<RouterProvider router={router} />
关键点总结:v6移除了Switch组件,使用createBrowserRouter配合<Suspense>实现代码分割。错误排查时务必确认路由配置层级和上下文环境。
这种配置方式能有效解决懒加载资源加载失败的问题,提高应用性能。

讨论