优化了进度条,页面性能提升了70%在梳理的过程中,看到有一个进度条组件,写的非常好。这让我想起了刚开始学习前端时写的进度条代码。学者想都别想,我第一个实习公司给我带来的导师也是如此)。因此,我想与大家分享这个优秀的进度条组件。同时,它也存在着非常严重的性能问题。在本文的最后,我将解释优化方法的问题和应用场景。进度条组件一般出现在抖音播放视频这样的场景中,如图下方箭头所示:image.png进度条会随着视频的长度而增长,当视频暂停时,进度条的动画也会暂停。来看看大部分人是怎么写的,为什么说思路和表现不好。这里我们以React为例。Vue开发者不用怕看不懂。主要看思路。主要功能有:支持播放、暂停、重放。/index.jsximport{useState}from'react'import'./index.css'lettimer=null//增量进度定时器lettotalTime=3000//假设视频播放为3sfunctionApp(){const[progress,setProgress]=useState(0)//Progressconst[isPlay,setIsPlay]=useState(false)//是否播放//setProgress递增逻辑consthandlerProgress=pre=>{if(pre<100)returnpre+1;else{alert('playingover')return0//播放结束,重新开始播放}}//开始播放&&暂停播放constandleVideo=()=>{setIsPlay(!isPlay)isPlay?clearInterval(timer):timer=setInterval(()=>setProgress(handlerProgress),totalTime/100)}//重播constreplay=()=>{setIsPlay(true)if(timer)clearInterval(timer);setProgress(0)timer=setInterval(()=>setProgress(handlerProgress),totalTime/100)}return(
