我读约阵营useState(),并useRef()在“ 鱼钩常见问题解答 ”,我糊涂了关于一些使用案例,似乎有useRef和useState解决方案的同时,我不知道哪条路是正确的方式。
从关于useRef()的“挂钩常见问题”中:
“ useRef()钩不仅用于DOM引用。“ ref”对象是通用容器,其当前属性是可变的,并且可以保存任何值,类似于类的实例属性。”
使用useRef():
function Timer() {
const intervalRef = useRef();
useEffect(() => {
const id = setInterval(() => {
// ...
});
intervalRef.current = id;
return () => {
clearInterval(intervalRef.current);
};
});
// ...
}
Run Code Online (Sandbox Code Playgroud)
使用useState():
function Timer() {
const [intervalId, setIntervalId] = useState(null);
useEffect(() => {
const id = setInterval(() => {
// ...
});
setIntervalId(id);
return () => {
clearInterval(intervalId);
};
});
// …Run Code Online (Sandbox Code Playgroud)