长按加速- 解决react - setInterval下无法更新问题

最开始直接setInterval里,useState硬写,发现更新不,固定值

换let,发现dom更新不了

正确做法是用ref

并且pc端可以长按的,只是要用onTouchStart,不要用onMouseDown

onTouchStart={handleMouseDown} onTouchEnd={handleMouseUp} onTouchMove={handleMouseUp}

然后我是一个rounded大盒子

盒子里套了一个rounde的absoulte,但是overflow-hidden,和一个正方形的div,这样就会出现竖线进度条。

 <div
      className="py-[6px] px-[12px] rounded-[25px] flex justify-center  items-center gap-[5px] border "
      style={{ border: "1px solid rgba(255,255,255,0.80)" }}
    >
      <div className=" absolute w-full h-full -z-10   overflow-hidden rounded-[25px] ">
        <div
          className={`h-full -z-10  bg-[rgba(255,255,255,0.40)]`}
          style={{ width: `${progress}%` }}
        ></div>
      </div>
      <span onTouchStart={handleMouseDown} onTouchEnd={handleMouseUp} onTouchMove={handleMouseUp}>
        长按跳过
      </span>
      <LongClickIcon />
    </div>

code

 const [progress, setProgress] = useState(0)

  const timerRef = useRef<number>()

  const handleMouseDown = () => {
    timerRef.current = setInterval(() => {
      setProgress((prevProgress) => {
        if (prevProgress === 100) {
          clearInterval(timerRef.current)
          handleClick()
          return 100
        } else {
          return prevProgress + 1
        }
      })
    }, 10)
  }

  const handleMouseUp = () => {
    clearInterval(timerRef.current)
    setProgress(0)
  }

  useEffect(() => {
    return () => {
      setProgress(0)
      clearInterval(timerRef.current)
    }
  }, [])

就类似这样,实现的胶囊💊切半形加载

相关推荐

  1. iOS按时无法保存图片问题解决方案

    2024-07-20 11:38:03       73 阅读
  2. Image组件无法设置事件

    2024-07-20 11:38:03       20 阅读
  3. 华为云服务器CentOS 8解决yum不能问题

    2024-07-20 11:38:03       20 阅读
  4. GlideApp无法生成问题解决

    2024-07-20 11:38:03       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 11:38:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 11:38:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 11:38:03       45 阅读
  4. Python语言-面向对象

    2024-07-20 11:38:03       55 阅读

热门阅读

  1. abc362(abcde)

    2024-07-20 11:38:03       15 阅读
  2. [jieba_fast][python]jieba_fast所有whl文件下载地址汇总

    2024-07-20 11:38:03       18 阅读
  3. 【Android】本地化的实现

    2024-07-20 11:38:03       16 阅读
  4. 刷题Day57|107. 寻找存在的路径

    2024-07-20 11:38:03       14 阅读
  5. PEFT的几种方式

    2024-07-20 11:38:03       15 阅读