From 09ddbe0c2be60bc74607d3a5271ab996304ca46d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8B=A7=E5=B7=B4=E7=9A=84=E7=8C=AB?= <353833373@qq.com> Date: Fri, 3 Dec 2021 10:19:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20animatingnumbers=20cr=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20(#41)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: animatingnumbers cr问题修改提交 * fix: animatingnumbers cr问题修改提交 --- src/packages/animatingnumbers/countup.tsx | 16 ++++++++-------- src/packages/animatingnumbers/demo.tsx | 6 +++--- src/packages/animatingnumbers/doc.md | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/packages/animatingnumbers/countup.tsx b/src/packages/animatingnumbers/countup.tsx index 6942e82..0658fe2 100644 --- a/src/packages/animatingnumbers/countup.tsx +++ b/src/packages/animatingnumbers/countup.tsx @@ -4,7 +4,7 @@ import bem from '@/utils/bem' export interface CountUpProps { maxLen: number - endNumer: string + endNumber: string delaySpeed?: number easeSpeed: number thousands: boolean @@ -13,26 +13,24 @@ export interface CountUpProps { } const defaultProps = { maxLen: 0, - endNumer: '', + endNumber: '', delaySpeed: 300, easeSpeed: 1, thousands: false, className: '', } as CountUpProps export const CountUp: FunctionComponent> = (props) => { - const { maxLen, endNumer, delaySpeed, easeSpeed, className, thousands, ...reset } = { + const { maxLen, endNumber, delaySpeed, easeSpeed, className, thousands, ...reset } = { ...defaultProps, ...props, } const b = bem('countup') const countupRef = useRef(null) const timerRef = useRef(0) - const numbers = Array.from({ length: 10 }).map((item, index) => { - return index - }) + const numbers = Array.from({ length: 10 }, (v, i) => i) const getShowNumber = () => { - const splitArr = endNumer.split('.') + const splitArr = endNumber.split('.') const intNumber = maxLen && splitArr[0].length < maxLen ? (Array(maxLen).join('0') + splitArr[0]).slice(-maxLen) @@ -49,10 +47,12 @@ export const CountUp: FunctionComponent> = (props) => { if (countupRef.current) { const numberItems = countupRef.current.querySelectorAll('.nut-countup__number') const numberFilterArr: Array = numerArr.filter((item: any) => !isNaN(item)) - for (let [index] of Object.entries(numberItems)) { + for (let index in numberItems) { + if (!Object.prototype.hasOwnProperty.call(numberItems, index)) continue const elem = numberItems[Number(index)] as HTMLElement const idx = Number(numberFilterArr[Number(index)]) if ((idx || idx == 0) && elem) { + // 计算规则:父元素和实际列表高度的百分比,分割成20等份 const transform = `translate(0, -${(idx == 0 ? 10 : idx) * 5}%)` elem.style.transform = transform elem.style.webkitTransform = transform diff --git a/src/packages/animatingnumbers/demo.tsx b/src/packages/animatingnumbers/demo.tsx index a4fbd89..f1b7d8b 100644 --- a/src/packages/animatingnumbers/demo.tsx +++ b/src/packages/animatingnumbers/demo.tsx @@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react' import { AnimatingNumbers } from './animatingnumbers' const AnimatingNumbersDemo = () => { - const [endNumer, setEndNumer] = useState('1570.99') + const [endNumber, setEndNumer] = useState('1570.99') useEffect(() => { setInterval(() => { setEndNumer(`${Math.floor(Math.random() * 999999)}.${Math.floor(Math.random() * 89 + 10)}`) @@ -12,10 +12,10 @@ const AnimatingNumbersDemo = () => { <>

CountUp-基础用法

- +

CountUp-自定义样式,动态修改数据(需要指定最大位数)

+ ``` ### AnimatingNumbers.CountUp-自定义样式,动态修改数据(需要指定最大位数) ```jsx const AnimatingNumbersDemo = () => { - const [endNumer, setEndNumer] = useState('1570.99') + const [endNumber, setEndNumer] = useState('1570.99') useEffect(() => { setInterval(() => { setEndNumer(`${Math.floor(Math.random() * 999999)}.${Math.floor(Math.random() * 89 + 10)}`) @@ -31,7 +31,7 @@ const AnimatingNumbersDemo = () => { }, []) return (