当前位置:首页 > React

react骨架屏实现

2026-01-27 01:08:18React

实现 React 骨架屏的常用方法

使用第三方库(如 react-loading-skeleton 安装库:npm install react-loading-skeleton 引入并使用:

import Skeleton from 'react-loading-skeleton';
const MyComponent = () => (
  <div>
    <Skeleton height={20} width={200} />
    <Skeleton count={3} height={10} />
  </div>
);

该库提供高度可定制的骨架块,支持颜色、尺寸等参数调整。

手动实现 CSS 骨架屏 通过 CSS 动画和占位元素模拟加载状态:

.skeleton {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}
@keyframes shimmer {
  from { background-position: 200% 0; }
  to { background-position: -200% 0; }
}

在组件中应用:

<div className="skeleton" style={{ width: '100%', height: '50px' }} />

结合 Suspense 和懒加载 React 18+ 推荐模式:

import { Suspense, lazy } from 'react';
const LazyComponent = lazy(() => import('./Component'));
const App = () => (
  <Suspense fallback={<SkeletonLoader />}>
    <LazyComponent />
  </Suspense>
);

动态内容替换策略 在数据加载完成后切换显示:

react骨架屏实现

const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
  fetchData().then(() => setIsLoading(false));
}, []);
return (
  <div>
    {isLoading ? <SkeletonLayout /> : <ActualContent />}
  </div>
);

最佳实践建议

  • 保持骨架屏结构与实际 UI 布局一致
  • 避免过度动画影响性能
  • 为不同屏幕尺寸设计响应式骨架
  • 使用 CSS 变量方便主题切换
  • 考虑骨架屏的 accessibility(添加 aria-live 属性)

标签: 骨架react
分享给朋友:

相关文章

如何删除react

如何删除react

卸载 React 项目依赖 打开项目根目录下的 package.json 文件,删除所有包含 react、react-dom 或其他 React 相关库的依赖项。保存文件后运行以下命令: npm u…

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 tr…

react如何调度

react如何调度

React 调度机制概述 React 的调度机制通过 Fiber 架构 和 Scheduler 模块实现任务优先级管理与时间切片(Time Slicing),确保高优先级更新(如用户交互)能快速响应,…

react如何减少伤害

react如何减少伤害

减少 React 应用性能伤害的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行浅比较,避免不必要的重新渲染。类组件可以使用 PureC…

react如何切换class

react如何切换class

动态切换 React 组件的类名 在 React 中动态切换类名可以通过多种方式实现,以下是常见的几种方法: 使用模板字符串和状态管理 function MyComponent() {…

react如何编码参数

react如何编码参数

编码参数的方法 在React中,编码参数通常涉及URL查询参数或路由参数的编码和解码。以下是几种常见场景的处理方法: URL查询参数编码 使用encodeURIComponent对参数进行编码,避免…