当前位置:首页 > React

如何实现react路由的懒加载

2026-01-25 21:44:19React

使用 React.lazy 和 Suspense

React.lazy 函数允许动态导入组件,结合 Suspense 组件实现懒加载。Suspense 提供加载中的回退 UI。

import React, { Suspense } from 'react';
const LazyComponent = React.lazy(() => import('./LazyComponent'));

function App() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <LazyComponent />
    </Suspense>
  );
}

结合 React Router 使用

在 React Router 中,可以将懒加载组件作为路由配置的一部分。适用于路由级代码分割。

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

const Home = React.lazy(() => import('./Home'));
const About = React.lazy(() => import('./About'));

function App() {
  return (
    <Router>
      <Suspense fallback={<div>Loading...</div>}>
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/about" element={<About />} />
        </Routes>
      </Suspense>
    </Router>
  );
}

预加载优化

通过预加载策略提升用户体验,例如在用户悬停时提前加载目标路由组件。

const About = React.lazy(() => import('./About'));

function App() {
  const preloadAbout = () => {
    import('./About');
  };

  return (
    <div onMouseEnter={preloadAbout}>
      <Suspense fallback={<div>Loading...</div>}>
        <About />
      </Suspense>
    </div>
  );
}

动态导入命名导出

对于具名导出的组件,需通过动态导入的 then 方法处理模块对象。

const LazyComponent = React.lazy(() =>
  import('./LazyComponent').then(module => ({
    default: module.NamedExport
  }))
);

错误边界处理

使用错误边界捕获懒加载过程中的异常,避免整个应用崩溃。

class ErrorBoundary extends React.Component {
  state = { hasError: false };

  static getDerivedStateFromError() {
    return { hasError: true };
  }

  render() {
    if (this.state.hasError) {
      return <h1>加载失败</h1>;
    }
    return this.props.children;
  }
}

function App() {
  return (
    <ErrorBoundary>
      <Suspense fallback={<div>Loading...</div>}>
        <LazyComponent />
      </Suspense>
    </ErrorBoundary>
  );
}

Webpack 魔法注释

通过 Webpack 的魔法注释自定义分块名称,便于识别和管理代码块。

如何实现react路由的懒加载

const LazyComponent = React.lazy(() =>
  import(/* webpackChunkName: "custom-name" */ './LazyComponent')
);

分享给朋友:

相关文章

如何实现语音react

如何实现语音react

语音识别基础设置 在React中实现语音识别功能通常需要借助浏览器的Web Speech API或第三方库。Web Speech API提供了SpeechRecognition接口,允许应用程序直接访…

h5页面如何实现

h5页面如何实现

实现H5页面的方法 H5页面是基于HTML5技术的网页,通常用于移动端和响应式设计。以下是实现H5页面的关键步骤和技术要点。 基础结构 使用HTML5的DOCTYPE声明作为页面的起始。HTML5简…

vue 实现动态路由

vue 实现动态路由

动态路由的实现方法 Vue中实现动态路由通常涉及以下关键步骤,结合Vue Router的API和异步加载逻辑完成。 基础配置 安装Vue Router并初始化路由实例。在router/index.j…

vue路由实现登录

vue路由实现登录

路由守卫实现登录验证 在Vue项目中,可以通过路由守卫(Navigation Guards)来实现登录验证逻辑。路由守卫能在路由跳转前、跳转后或跳转时进行拦截处理。 安装路由依赖 npm inst…

vue路由实现模式

vue路由实现模式

Vue路由实现模式 Vue Router 提供了两种路由实现模式:Hash 模式和 History 模式。两种模式的主要区别在于 URL 的表现形式以及后端支持的需求。 Hash 模式 Hash 模…

vue的路由实现

vue的路由实现

Vue 路由的实现方式 Vue 路由通常通过 Vue Router 实现,这是 Vue.js 官方提供的路由管理器。以下是 Vue 路由的核心实现步骤和配置方法。 安装 Vue Router 使用…