/* * @Author: yehuozhili * @Date: 2021-07-12 15:54:35 * @LastEditors: yehuozhili * @LastEditTime: 2021-07-13 21:07:22 * @FilePath: \dooringx\packages\dooringx-lib\src\components\wrapperMove\ticker.tsx */ import React, { useEffect, useRef, useState } from 'react'; import UserConfig from '../../config'; const width = '20px'; const indent = 50; function Ticker(props: { config: UserConfig }) { const topRef = useRef(null); const leftRef = useRef(null); const [topRender, setTopRender] = useState(0); const [leftRender, setLeftRender] = useState(0); const scale = props.config.getScaleState().value; useEffect(() => { const timer = setTimeout(() => { if (topRef.current) { const width = topRef.current.getBoundingClientRect().width; const renderWidth = Math.ceil(width / 10 / scale); setTopRender(renderWidth); } // left可以不用放,但为了更新统一 if (leftRef.current) { const height = leftRef.current.getBoundingClientRect().height; const renderHeight = Math.ceil(height / 10 / scale); setLeftRender(renderHeight); } }, 300); return () => { clearTimeout(timer); }; }, [props.config, props.config.collapsed, scale]); return ( <>
{Array(topRender) .fill(1) .map((_, i) => { if (i % 10 === 0) { return (
{i}
); } else { return (
); } })}
{Array(leftRender) .fill(1) .map((_, i) => { if (i % 10 === 0) { return (
{i}
); } else { return (
); } })}
); } export default Ticker;