提问人:Srinivas Talnikar 提问时间:10/17/2023 更新时间:10/17/2023 访问量:39
为什么 setInterval 在 nodejs 中获取变量的最新值,但在 React 的 useEffect 中却没有这样做?[复制]
Why does setInterval pickup the latest value of variable in nodejs, but fails to do so in React's useEffect? [duplicate]
问:
这个问题在这里已经有答案了:
JavaScript 闭包是如何工作的? (86 个回答)
useEffect() 中缺少依赖项真的会导致数据陈旧吗? (2 个答案)
错误的 React 将行为与事件侦听器挂钩 (9 个答案)
React useEffect 函数内部的陈旧值 (2 个答案)
上个月关闭。
NodeJS 代码
let a = 0;
function useEffect(callback) {
const b = callback;
b();
}
const cb = () => {
setInterval(() => {
console.log('a', a);
}, 1000);
};
useEffect(cb);
setInterval(() => {
a++;
}, 500);
React 的代码
import React, {useEffect, useState} from 'react';
export const App = ()=> {
const [a, setA] = useState(0);
useEffect(() => {
setInterval(() => {
console.log('a', a);
}, 1000);
}, [])
useEffect(() => {
setInterval(() => {
setA(a => a + 1)
}, 500);
}, [])
return <></>
}
结果:: NodeJS:每隔一段时间记录一次更新的值 ReactJS:记录的值不会在即将到来的时间间隔内更新
React 的代码段不应该像 nodejs 一样执行,即捕获“a”的引用并显示最新值。我在这里错过了什么?
答: 暂无答案
评论
a
a
a