React自定义计数器Hook的延迟配置问题及修改需求
React自定义计数器Hook的延迟配置问题及修改需求
嗨,看起来你已经搭好了一个带滑块调节延迟的计数器框架,但目前滑块控制的delay状态变量还没真正作用到计数器的定时逻辑里,咱们来一步步把这个功能补全:
第一步:在App组件中传递delay参数给useCounter Hook
你需要把组件里的delay状态传给自定义Hook,修改App.js里的Hook调用行:
// App.js 中修改这一行 const count = useCounter(delay);
第二步:完善useCounter Hook的逻辑
接下来要补全useCounter.js里的useEffect代码,让它使用传入的delay参数,同时要处理延迟变化时重新启动定时器的逻辑,还要记得清理定时器避免内存泄漏:
// useCounter.js 完整代码 import { useState, useEffect } from 'react'; export function useCounter(delay) { const [count, setCount] = useState(0); useEffect(() => { // 设置定时器,每隔delay毫秒更新一次count const timerId = setInterval(() => { setCount(prevCount => prevCount + 1); }, delay); // 清理函数,组件卸载或delay变化时清除旧定时器 return () => clearInterval(timerId); }, [delay]); // 把delay加入依赖数组,延迟变化时重新执行effect return count; }
这样修改后,滑块调节delay的值时,计数器的 Tick 间隔就会跟着实时变化啦——比如把滑块拉到最小的10ms,计数器就会飞快跳动,拉到2000ms就会变慢很多。
备注:内容来源于stack exchange,提问作者lap top
相关产品推荐
相关产品推荐

