人们使用 useRef 来保存最新的值,如此代码
function MyComponent({ value }) {
const valueRef = useRef();
useEffect(() => {
valueRef.current = value;
});
}
Run Code Online (Sandbox Code Playgroud)
我知道 useEffect 需要并发模式。
并且 useEffect 按照定义的顺序执行
function MyComponent({ value }) {
useEffect(() => {
console.log('log1');
});
useEffect(() => {
console.log('log2');
});
}
// result is
// log1
// log2
Run Code Online (Sandbox Code Playgroud)
所以在下面的代码中,log1 用旧值打印,log2 用新值打印
function MyComponent({ value }) {
const valueRef = useRef();
useEffect(() => {
console.log('log1', valueRef.current);
});
useEffect(() => {
valueRef.current = value;
});
useEffect(() => {
console.log('log2', valueRef.current);
}); …Run Code Online (Sandbox Code Playgroud)