React+TS前台项目实战(十三)-- 全局常用响应式加载动画Loading组件封装

embedded/2024/12/23 2:35:26/

文章目录

  • 前言
  • Loading组件
    • 1. 功能分析
    • 2. 代码+详细注释
    • 3. 使用方式
    • 4. 不同尺寸loading动画效果展示
  • 总结


前言

高阶组件有几大优点,其中一个就是渲染劫持,如懒加载,是否显示该元素loading,这在项目中我们经常用到。毫无疑问,这个实战系列我们必然也要用到它,本文主要封装这个loading组件,为了后期开发页面使用。


Loading组件

1. 功能分析

(1)通过size属性,可以自定义加载动画的尺寸
(2)通过传入className属性, 可以自定义加载动画的样式
(3)通过传入imgUrl属性, 可以自定义加载动画的图片
(4)组件使用了 classNames 库来合并样式类名,并且使用了 css模块,和styles 模块中的样式类名来设置弹框的样式

2. 代码+详细注释

// @/components/Loading/index.tsx
import { FC } from "react";
import classNames from "classnames";
import { LoadingBlock } from "./styled";
import LoadingImage from "@/assets/logo.png";// 组件的属性类型
type Props = {// loading的尺寸size?: "small" | "large";// 自定义的类名className?: string;// 自定义的图片地址imgUrl?: string;
};// 动画懒加载组件
const Loading: FC<Props> = ({ size, className, imgUrl }) => (<LoadingBlock className={classNames(className)} size={size}><img src={imgUrl ?? LoadingImage} alt="loading" /></LoadingBlock>
);export default Loading;------------------------------------------------------------------------------
// @/components/Dialog/styled.tsx
import styled, { css } from "styled-components";
import variables from "@/styles/variables.module.scss";const sizeStyles = {small: css`width: 100px;`,large: css`width: 300px;`,
};export const LoadingBlock = styled.div<{ size?: "small" | "large" }>`margin: 18px 0;text-align: center;img {width: 200px;${({ size }) => size && sizeStyles[size]}}@media (max-width: ${variables.mobileBreakPoint}) {margin: 8px 0;img {width: 60px;}}
`;

3. 使用方式

// 引入组件
import Loading from "@/components/Loading";
// 使用
<Loading size="small" /> {/* 小尺寸loading */}
<Loading /> {/* 默认尺寸loading */}
<Loading size="large" /> {/* 大尺寸loading */}

4. 不同尺寸loading动画效果展示

在这里插入图片描述


总结

下一篇讲【布局组件Header组件封装】。关注本栏目,将实时更新。


http://www.ppmy.cn/embedded/51264.html

相关文章

谈谈面试常考题:懒加载,防抖,节流(方法实现详解)

前言 最近在学习中确实收获了挺多东西&#xff0c;其中我觉得有必要拿来进行分享一下的就是懒加载了&#xff0c;还有相关的防抖和节流。因为在浏览器中这些都是属于很常见的性能优化&#xff0c;面试也是常考题。话不多说&#xff0c;速度发车。 什么是懒加载&#xff1f;懒…

【云原生】Docker可视化工具Portainer使用详解

目录 一、前言 二、docker可视化管理概述​​​​​​​ 2.1 什么是docker可视化管理 2.1.1 Docker可视化管理常用功能 2.2 为什么需要docker可视化管理工具 2.3 docker可视化工具带来的好处 三、常用的docker容器可视化管理工具解决方案 3.1 Portainer 3.2 Rancher 3…

CSS从入门到精通——动画:简单的小动画

目录 任务描述 相关知识 创建动画 绑定元素 编程要求 任务描述 本关任务&#xff1a;用 CSS3 实现简单的小动画。效果图如下&#xff1a; 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.创建动画&#xff0c;2.绑定元素。 创建动画 用 keyframes来创建…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-25使用块的网络VGG

25使用块的网络VGG import torch from torch import nn import liliPytorch as lp import matplotlib.pyplot as plt# 定义VGG块 # num_convs: 卷积层的数量 # in_channels: 输入通道的数量 # out_channels: 输出通道的数量 def vgg_block(num_convs, in_channels, out_channel…

【CSS】cursor属性的作用,怎么使用

cursor属性的作用 cursor属性在CSS中用于定义元素在用户和浏览器交互时所显示的光标样式。它可以改变鼠标光标的外观&#xff0c;以提供更好的用户体验和交互性。通过cursor属性&#xff0c;可以为元素设置不同的光标样式&#xff0c;如箭头、手型、十字、等待、文本输入等。这…

DVWA-XSS(Stored)-beef

用Low Level来测试beef的使用 beef配置 如果kali没有beef的&#xff0c;进行下载 apt install beef-xss使用 beef-xss # 命令方式启动 beef-xss-stop # 命令方式关闭 systemctl start beef-xss.service #开启beefsystemctl stop beef-xss.service #关闭…

【深度学习】sdwebui A1111 加速方案对比,xformers vs Flash Attention 2

文章目录 资料支撑资料结论sdwebui A1111 速度对比测试sdxlxformers 用contorlnet sdxlsdpa&#xff08;--opt-sdp-no-mem-attention&#xff09; 用contorlnet sdxlsdpa(--opt-sdp-attention) 用contorlnet sdxl不用xformers或者sdpa ,用contorlnet sdxl不用xformers或者sdpa …

富唯智能复合机器人

复合机器人&产品概述 富唯智能复合机器人集协作机器人、移动机器人和视觉引导技术于一体&#xff0c;搭载ICD系列核心控制器&#xff0c;一体化控制整个复合机器人系统&#xff0c;并且可以对接产线系统&#xff0c;搭配我司自研的2D/3D视觉平台&#xff0c;能够轻松实现工…