当前位置:首页 > React

react实现lazyload

2026-01-26 13:02:39React

React 实现 LazyLoad

使用 React.lazySuspense 实现组件懒加载
React.lazy 是 React 官方提供的懒加载组件的方法,结合 Suspense 可以优雅地处理加载状态。

import React, { Suspense } from 'react';

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

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

fallback 用于在组件加载时显示占位内容。

图片懒加载(Intersection Observer API)
通过 Intersection Observer 监听图片是否进入视口,动态加载资源。

react实现lazyload

import React, { useEffect, useRef } from 'react';

const LazyImage = ({ src, alt }) => {
  const imgRef = useRef();

  useEffect(() => {
    const observer = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          const img = entry.target;
          img.src = src;
          observer.unobserve(img);
        }
      });
    });

    observer.observe(imgRef.current);
    return () => observer.disconnect();
  }, [src]);

  return <img ref={imgRef} alt={alt} />;
};

// 使用示例
<LazyImage src="image-url.jpg" alt="Lazy-loaded image" />

第三方库实现(react-lazyload)
react-lazyload 是一个流行的懒加载库,支持组件和图片的懒加载。
安装:

npm install react-lazyload

使用示例:

react实现lazyload

import LazyLoad from 'react-lazyload';

function App() {
  return (
    <LazyLoad height={200} offset={100}>
      <img src="image.jpg" alt="Lazy-loaded" />
    </LazyLoad>
  );
}

offset 控制提前加载的像素范围,height 设置占位高度。

路由懒加载(React Router)
结合 React.lazy 实现路由级别的懒加载:

import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import React, { Suspense } from 'react';

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

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

注意事项

  • 懒加载的组件必须导出为 default
  • 生产环境下需确保打包工具(如 Webpack)支持代码分割。
  • 图片懒加载时,建议使用占位图或骨架屏优化用户体验。

标签: reactlazyload
分享给朋友:

相关文章

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impo…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…