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

班级网站 程序营销培训讲师

班级网站 程序,营销培训讲师,长沙做优化的公司,校本教研网站建设方案react ant-design实现数字对比动画效果:当新获取的数字比之前展示的数字多或少2时,显示“2”或“-2”的动画效果 1. 创建独立的 AnimatedValue 组件 // components/AnimatedValue/index.jsx import React, { useState, useEffect, useRef } from reac…

 react + ant-design实现数字对比动画效果:当新获取的数字比之前展示的数字多或少2时,显示“+2”或“-2”的动画效果

1. 创建独立的 AnimatedValue 组件

// components/AnimatedValue/index.jsx
import React, { useState, useEffect, useRef } from 'react';
import styles from './styles.module.less';const AnimatedValue = ({ value, name }) => {const [displayValue, setDisplayValue] = useState('--');const [diff, setDiff] = useState(null);const prevValue = useRef(null);const isInitialLoad = useRef(true);useEffect(() => {if (value !== undefined && value !== null) {const numValue = Number(value);// 只有在不是初始加载且前值存在时才计算差值if (!isInitialLoad.current && prevValue.current !== null) {const difference = numValue - prevValue.current;if (Math.abs(difference) >= 1) {setDiff(difference);// 3秒后清除差值显示const timer = setTimeout(() => setDiff(null), 3000);return () => clearTimeout(timer);}}prevValue.current = numValue;setDisplayValue(numValue);if (isInitialLoad.current) {isInitialLoad.current = false;}} else {setDisplayValue('--');}}, [value]);return (<div className={styles.value_container}><div className={styles.value}>{displayValue}</div>{diff !== null && (<div className={`${styles.diff_animation} ${diff > 0 ? styles.increase : styles.decrease}`}>{diff > 0 ? `+${diff}` : diff}</div>)}</div>);
};export default AnimatedValue;

2. 对应的样式文件

// components/AnimatedValue/styles.module.less
.value_container {position: relative;display: inline-block;min-width: 60px;height: 30px; // 固定高度防止布局抖动
}.value {display: inline-block;
}.diff_animation {position: absolute;right: -30px;top: 0;font-size: 14px;font-weight: bold;animation: fadeUp 1.5s ease-out forwards;will-change: transform, opacity;&.increase {color: #f5222d; // 红色表示增加}&.decrease {color: #52c41a; // 绿色表示减少}
}@keyframes fadeUp {0% {opacity: 1;transform: translateY(0);}70% {opacity: 1;}100% {opacity: 0;transform: translateY(-20px);}
}

3. 在父组件中使用

import React, { useState, useEffect } from 'react';
import { Row, Col } from 'antd';
import AnimatedValue from '@/components/AnimatedValue';
import styles from './yourStyles.module.less';const BusiMonitor = () => {const [data, setData] = useState([]);// 模拟API调用const fetchData = () => {// 模拟数据变化const newData = data.map(item => ({...item,value: Math.floor(Math.random() * 20)}));setData(newData);};// 设置定时器,每10秒调用一次APIuseEffect(() => {const timer = setInterval(fetchData, 10000);fetchData(); // 初始加载数据return () => clearInterval(timer);}, []);return (<Row justify="space-between">{data.map(({ name, value }, index) => (<Col ><div><div className={styles.name}>{name}业务量</div><AnimatedValue value={value} name={name} /></div></Col>))}</Row>);
};export default BusiMonitor;

http://www.dtcms.com/wzjs/304416.html

相关文章:

  • 临沂 网站推广百度一下你就知道官网
  • 电商网站设计方案上海推广外包
  • 主网站怎么做熊掌号优化建网站软件
  • 关于javaweb网站开发论文互联网项目推广平台有哪些
  • 海外商城网站建设百度天眼查
  • 海盐市网站建设在线刷高质量外链
  • wordpress附件链接广州seo关键词优化费用
  • 在哪里做马可波罗网站营销软件哪个好
  • 网站建设推广方案书如何查看百度搜索指数
  • 苏州做网站设计的公司有哪些百度手机助手下载2021新版
  • 怎样做移动端网站淄博头条新闻今天
  • 苹果手机wordpress打不开百度禁止seo推广
  • 山东省聊城建设学校网站百度问一问人工客服怎么联系
  • 成都网站优化公司专业seo网站
  • wordpress站做app关键词什么意思
  • 从哪个网站找钢做的微商seo外链收录
  • 怎么把别人做的网站变成自己的搜索引擎优化推广
  • 建筑工程网免费下载杭州seo排名优化外包
  • 微信小程序开发如何制作seo综合检测
  • 高端建设网站公司新闻最新热点
  • 专科医院网站建设一手渠道推广平台
  • 连云港做网站多少钱提高百度搜索排名工具
  • wordpress 设置用户权限seo确定关键词
  • 海南网站建设小强seo收录查询工具
  • 自己的网站做app登录百度账号注册
  • 成都市城乡建设委员会的网站淘宝店铺推广
  • 星斗科技 网站建设投广告的平台有哪些
  • 通州住房城乡建设委员会网站搜索引擎优化的主要特征
  • 用asp制作一个简单的网站如何做网销
  • vps如何建两个网站关联词有哪些关系