当前位置: 首页 > news >正文

网站开发z亿玛酷1流量订制怎么做网站站内优化

网站开发z亿玛酷1流量订制,怎么做网站站内优化,房屋装修案例,盗版小说网站怎么做文章目录 前言Button组件1. 功能分析2. 代码注释说明3. 使用方式4. 效果展示(1)有加载动画,执行promise函数(2)无加载动画,执行click事件 总结 前言 今天这篇主要讲全局按钮组件封装,可根据UI设…

文章目录

  • 前言
  • Button组件
    • 1. 功能分析
    • 2. 代码+注释说明
    • 3. 使用方式
    • 4. 效果展示
    • (1)有加载动画,执行promise函数
    • (2)无加载动画,执行click事件
  • 总结


前言

今天这篇主要讲全局按钮组件封装,可根据UI设计师要求自定义修改。


Button组件

1. 功能分析

(1)可以通过className属性自定义按钮样式,传递样式类名来修改按钮的样式
(2)是否可点击由disabled属性控制,当disabled为true时,按钮被禁用
(3)加载状态由loading属性控制,当loading为true时,按钮显示加载动画
(4)当点击事件回调是Promise函数,执行后续处理;否则直接调用click点击事件

2. 代码+注释说明

// @/components/Button/index.tsx
import { useState } from "react";
import classNames from "classnames";
import styles from "./index.module.scss";// 组件的属性类型
type Props = {// 按钮的文本text: string;// 自定义的类名className?: string;// 是否禁用按钮disabled?: boolean;// 是否显示加载动画loading?: boolean;// 点击按钮时的回调函数click?: () => void;beforeChange?: (() => Promise<any>) | undefined;
};// 按钮组件
export default (props: Props) => {// 解构属性const { text, className, disabled, loading, beforeChange, click } = props;const [load, setLoad] = useState(false);/*** 点击按钮时的事件处理函数* - 如果按钮被禁用,则直接返回* - 如果 beforeChange 是一个Promise函数,则调用其后续处理* - 否则直接调用 click*/const handleClick = () => {if (disabled) return undefined;const isFunction = Object.prototype.toString.call(beforeChange) === "[object Function]";if (!isFunction) {click?.();return false;}// 启用加载动画setLoad(true);beforeChange?.().finally(() => setLoad(false));};return (// 按钮元素<buttontype="button"// 设置类名className={classNames(styles.container,// 禁用或加载时增加特定的类名(disabled || loading) && styles.isDisabled,className)}// 禁用时禁用快捷键操作onKeyDown={handleClick}// 禁用时禁用点击事件onClick={handleClick}>{/* 加载动画 */}{loading && load && <i className={`${styles.loading} iconfont icon-loading`}></i>}{/* 按钮文本 */}<span>{text}</span></button>);
};
------------------------------------------------------------------------------
// @/components/Button/index.module.scss
.container {display: flex;align-items: center;justify-content: center;width: 100%;height: 40px;color: #fff;background-color: var(--cd-primary-color);border-radius: 4px;border: none;cursor: pointer;span {font-size: 14px;line-height: 14px;}&:hover {background-color: var(--cd-primary-color);}.isDisabled {opacity: 0.5;cursor: not-allowed;}@keyframes rotate {0% {transform: rotate(0deg);}50% {transform: rotate(180deg);}100% {transform: rotate(360deg);}}.loading {font-size: 24px;animation: rotate 2s linear infinite;}
}

3. 使用方式

// 引入组件
import Button from "@/components/Button";
// 有加载动画使用方式
<Button text="有loading" loading={true} beforeChange={onDoneChange}></Button>
// 点击按钮触发loading
const onDoneChange = () => {return new Promise((resolve) => {setTimeout(() => {console.log("onDoneChange");resolve(true);}, 2000);});
};-----------------------------------------------------------------------------------------------------// 无加载动画使用方式
<Button text="有loading" loading={false} beforeChange={onDoneClick}></Button>
// 点击按钮不触发loading
const onDoneClick = () => {console.log("onDoneClick");
};

4. 效果展示

(1)有加载动画,执行promise函数

在这里插入图片描述
在这里插入图片描述

(2)无加载动画,执行click事件

)


总结

下一篇讲【全局模态框Modal组件、公共弹窗Dialog组件封装】。关注本栏目,将实时更新。

http://www.yayakq.cn/news/169930/

相关文章:

  • 濮阳市住房和城乡建设局网站wordpress主题怎么制作
  • 上市公司网站建设分析阳江网站制作公司
  • 个体工商户做的网站能推广吗平台企业是什么意思
  • 城市文明建设网站抖音网络营销推广方式
  • 天津市网站建设天津商城建设品牌注册名词解释
  • 网站设计公司有哪些铁岭做网站的
  • 网站设计三把火58同城网站的建设目标是什么
  • 贵州省公路建设集团有限公司网站三合一企业网站模板
  • 广元建设局网站摄影作品共享网站开发背景
  • 挖掘爱站网福州网站推广优化
  • 网站建设知名私人订制
  • 有哪些企业会找人做网站建设网站开发 浏览器
  • 东莞市凤岗建设局网站seo搜索优化邵阳
  • 朔州seo网站建设网站建设合同范本下载
  • 下载做ppt的动画片的好网站容易做的html5的网站
  • 网站建设合同报价单 模板下载wordpress 4.9更新
  • 门户网站建设大概多少钱wordpress去除无用标签
  • 天津网站建设服务好网络空间安全专业
  • 网站开发大学是什么专业公众号做电影网站赚钱
  • 做网站需要的企业手机app下载安装免费下载
  • 优化网站用什么软件好云排名网站
  • 西安专业网站建设价格想建一个网站怎么做
  • 上海徽与章网站建设宗旨贵州建设厅网站在建工程查询
  • 网站管理系统改不了的不同类型网站
  • 网页制作工具的选择与网站整体风格是有关系的浙江中立建设有限公司网站
  • 店面建设网站的必要性六安火车站网站
  • 什么网站可以发布信息用flask做的网站有哪些
  • 做打鱼网站的代理大网站怎样选域名
  • 网页制作框架揭阳百度快照优化排名
  • 公司网站打不开站长工具星空传媒