当前位置:首页 > React

react如何控制loading状态

2026-01-24 05:00:44React

控制 Loading 状态的方法

在 React 中,可以通过多种方式控制 Loading 状态,以下是几种常见的实现方法:

使用 useState 钩子管理状态

import { useState } from 'react';

function MyComponent() {
  const [isLoading, setIsLoading] = useState(false);

  const fetchData = async () => {
    setIsLoading(true);
    try {
      const response = await fetch('api/data');
      const data = await response.json();
    } finally {
      setIsLoading(false);
    }
  };

  return (
    <div>
      {isLoading ? <div>Loading...</div> : <div>Content</div>}
    </div>
  );
}

使用自定义 Hook 封装逻辑

function useLoading() {
  const [isLoading, setState] = useState(false);
  const load = async (promise) => {
    setState(true);
    try {
      await promise;
    } finally {
      setState(false);
    }
  };
  return [isLoading, load];
}

function MyComponent() {
  const [isLoading, load] = useLoading();

  const handleClick = () => load(fetchData());
}

结合 Context 全局管理

const LoadingContext = createContext();

function LoadingProvider({ children }) {
  const [isLoading, setIsLoading] = useState(false);
  const value = { isLoading, setIsLoading };
  return <LoadingContext.Provider value={value}>{children}</LoadingContext.Provider>;
}

function useLoading() {
  return useContext(LoadingContext);
}

使用第三方库 如 react-query 等库内置了 loading 状态管理:

import { useQuery } from 'react-query';

function MyComponent() {
  const { isLoading, data } = useQuery('data', fetchData);
  return isLoading ? <Spinner /> : <DataView data={data} />;
}

优化 Loading 体验的技巧

防闪烁处理 对于快速完成的请求,可以设置最小显示时间避免闪烁:

const [isLoading, setIsLoading] = useState(false);

useEffect(() => {
  let timer;
  if (isLoading) {
    timer = setTimeout(() => setIsLoading(false), 500);
  }
  return () => clearTimeout(timer);
}, [isLoading]);

骨架屏(Skeleton)替代 比简单文字提示更友好的加载方式:

{isLoading ? <Skeleton height={100} /> : <RealContent />}

按需加载组件 配合 React.lazy 实现组件级加载:

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

function MyComponent() {
  return (
    <Suspense fallback={<LoadingSpinner />}>
      <LazyComponent />
    </Suspense>
  );
}

react如何控制loading状态

标签: 状态react
分享给朋友:

相关文章

react如何使用

react如何使用

React 的基本使用 React 是一个用于构建用户界面的 JavaScript 库,以下是一些核心概念和使用方法。 安装 React 通过 create-react-app 快速搭建 Reac…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

如何优化react

如何优化react

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

如何记忆react

如何记忆react

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