typescript - react hooks 如何有效的解决闭包问题?

 

问题描述:

请教一下,闭包在 react 中不注意就会产生,尤其是传递 方法的时候,有什么解决闭包的方法吗?


 

第 1 个答案:

1.用依赖数组:在 useEffect 或者 useCallback 里,可以通过提供一个依赖数组来通知 React 哪些变量的变化应该触发函数的重新执行。

useEffect(() => {
  // 函数会在 count 变化时重新执行
  console.log(count);
}, [count]);

2.用 ref 在整个组件生命周期内保持不变,但它的 current 属性可以存储可变的值。

const countRef = useRef(count);
countRef.current = count;

useEffect(() => {
  const id = setInterval(() => {
    console.log(countRef.current); //引用最新的 count
  }, 1000);
  return () => clearInterval(id);
}, []); // 空依赖数组,函数只在组件挂载时执行一次

3。用函数式更新:

const [count, setCount] = useState(0);

// 错误的更新方式,可能会引用旧的 count
const increment = () => setCount(count + 1);

// 正确的更新方式,总是基于最新的 count
const increment = () => setCount(prevCount => prevCount + 1);

 

第 2 个答案:

没有踩过这个坑的。不算使用过react。


使用MediaSource播放音频流,监听audio的ended无法触发<audio id="audios"></audio>const aud ...