我认为这个例子只是为了演示 useRef 是如何工作的,尽管我个人找不到很多 useRef 的用例,除了<input ref={inputEl} />
inputEl 是用 useRef 定义的。因为如果你想定义一个组件实例变量之类的东西,为什么不使用 useState 或 useMemo 呢?实际上我也想学习(为什么在这个react示例中使用 useRef?只是为了概念演示?)
至于react文档示例https://reactjs.org/docs/hooks-faq.html#is-there-something-like-instance-variables:
function Timer() {
const intervalRef = useRef();
useEffect(() => {
const id = setInterval(() => {
// ...
});
intervalRef.current = id;
return () => {
clearInterval(intervalRef.current);
};
});
// ...
function handleCancelClick() {
clearInterval(intervalRef.current);
}
// ...
}
我尝试过并且可以在没有 useRef 的情况下实现相同的效果,如下所示:
function Timer() {
const interval = null;
useEffect(() => {
const id = setInterval(() => {
// ...
});
interval = id;
return () => {
clearInterval(interval);
};
});
// ...
function handleCancelClick() {
clearInterval(interval);
}
// ...
}