我已经阅读了使用效果的完整指南 - 在过度react时逆流而上。
例子表明,如果我们想要获取最新的count
,我们可以使用useRef
保存可变变量,并在异步函数 laster 中获取它:
function Example() {
const [count, setCount] = useState(0);
const latestCount = useRef(count);
useEffect(() => {
// Set the mutable latest value
latestCount.current = count;
setTimeout(() => {
// Read the mutable latest value
console.log(`You clicked ${latestCount.current} times`);
}, 3000);
});
// ...
}
但是,我可以通过在组件函数之外创建一个变量来做同样的事情,例如:
import React, { useState, useEffect, useRef } from 'react';
// defined a variable outside function component
let countCache = 0;
function Counter() {
const [count, setCount] = useState(0);
countCache = count; // set default value
useEffect(() => {
setTimeout(() => {
// We can get the latest count here
console.log(`You clicked ${countCache} times (countCache)`);
}, 3000);
});
// ...
}
export default Counter;
这两种方法都实用吗,或者如果我在函数组件之外定义变量有什么不好的吗?