reactrouter6路由懒加载
时间: 2025-04-23 12:57:36 浏览: 20
### 使用 React Router v6 实现路由懒加载
为了提高应用性能并减少初始加载时间,可以利用 `React.lazy` 和 `Suspense` 来实现按需加载组件。这种方式允许页面只在访问特定路径时才加载对应的组件。
#### 配置懒加载路由
当定义路由表时,可以通过 `React.lazy` 动态导入组件,并将其包裹在一个 `<Suspense>` 组件内来处理加载状态:
```jsx
import React, { lazy, Suspense } from 'react';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
// 定义懒加载组件
const Home = lazy(() => import('./components/Home'));
const About = lazy(() => import('./components/About'));
function App() {
return (
<Router>
<Suspense fallback={<div>Loading...</div>}>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Suspense>
</Router>
);
}
export default App;
```
上述代码展示了如何通过 `lazy()` 函数创建延迟加载的组件实例,并设置了一个简单的加载指示器作为 `fallback` 属性传递给 `Suspense`[^1]。
对于可能出现的加载失败情况,建议添加额外的错误边界逻辑以防止整个应用程序崩溃。这通常涉及到捕获异常并在适当位置显示友好的提示信息[^3]。
#### 错误边界的实现
为了避免因网络问题或其他原因造成的加载失败影响用户体验,在实际开发中应该考虑加入全局性的错误捕捉机制。可以在顶层布局中封装一层 ErrorBoundary 或者直接修改 Suspense 的 fallback UI 显示更详细的报错信息。
```jsx
class ErrorBoundary extends React.Component {
constructor(props) {
super(props);
this.state = { hasError: false };
}
static getDerivedStateFromError(error) {
// 更新 state 使下一次渲染能够显示降级后的 UI.
return { hasError: true };
}
componentDidCatch(error, errorInfo) {
console.error("Caught an error:", error, errorInfo);
}
render() {
if (this.state.hasError) {
// 可以自定义降级 UI 并渲染
return <h1>Something went wrong.</h1>;
}
return this.props.children;
}
}
```
之后将此组件应用于需要保护的地方即可有效提升系统的健壮性和稳定性。
阅读全文
相关推荐

















