useRef保存值,用来清除定时器;但是在清除定时器时写的useEffect第二个参数传递问题导致无法清除,不传参数时可以清除,传递反而不能清除,请问为什么?
import React, { useState, useRef, useEffect } from 'react';
// useRef保存timer
export default function App(props) {
const [count, setCount] = useState(0);
const timerRef = useRef();
console.log(timerRef)
useEffect(() => {
timerRef.current = setInterval(() => {
if (count < 2) {
setCount(count => count + 1);
}
}, 10);
console.log(timerRef.current, '1 effect') // 2 "1 effect"
}, []);
useEffect(() => {
console.log(timerRef.current, '2 effect'); // 2 "2 effect"
if (count >= 2) {
clearInterval(timerRef.current)
}
}) //为什么第二个参数传入[],反而不能清除定时器呢?
// }, [])
return (
<div>
<div>数值:{count}</div>
</div>
);
执行1次, count不满足清除的条件,不能清除,需要传入[count],生效。感谢@jokester