zoukankan      html  css  js  c++  java
  • 分享一个数字跳动的组件

    import { createElement, useEffect, useState } from 'rax';
    import View from 'rax-view';
    import classnames from 'classnames';
    import { isValidNumber } from '@/common/util';
    
    interface NumberAnimationPropsType {
      from?: number;
      value: number;
      speed?: number;
      interval: number;
      className?: string;
      style?: CSSProperties;
    }
    
    export default function NumberAnimation(props: NumberAnimationPropsType) {
      const {
        style,
        className,
        value,
        triggerAnimation = true,
        from = 0,
        speed = 1000,
        interval = 100,
        format = v => v,
      } = props;
    
      const [ numberShow, setNumber ] = useState(from);
    
       function isValidNumber(num) {
          return isNaN(num) ? false : num !== null && num !== 
    undefined && num !== "";
       }
    
      useEffect(() => {
        if (!triggerAnimation) {
          return;
        }
    
        if (!isValidNumber(value)) {
          setNumber(value);
          return;
        }
    
        let loops = Math.ceil(speed / interval),
            increment = parseInt((value - from) / loops),
            loopCount = 0,
            number = from,
            timer = setInterval(updateTimer, interval);
    
        function updateTimer() {
          loopCount++;
    
          if (loopCount >= loops){
            number = value;
            clearInterval(timer);
          } else {
            number += increment;
          }
    
          setNumber(number);
        };
    
        return () => {
          if (timer) {
            clearInterval(timer);
          }
        };
      }, [value, triggerAnimation]);
    
      return (
        <View className={className} style={style}>{format(numberShow)}</View>
      );
    }
  • 相关阅读:
    luogu2568GCD题解--欧拉函数
    POJ1845Sumdiv题解--约数之和
    luogu1731生日蛋糕题解--恶心剪枝
    luogu1156垃圾陷阱题解--背包DP
    CF336C-Vasily the Bear and Sequence题解--贪心
    luogu2261余数求和题解--整除分块
    UVA10140PrimeDistance题解--质数/技巧
    CSP2019 游记
    CSP-SJX2019 和积和
    NOIP2018 游记
  • 原文地址:https://www.cnblogs.com/yujiawen/p/15697101.html
Copyright © 2011-2022 走看看