为了账号安全,请及时绑定邮箱和手机立即绑定

SetInterval 未获取最新的道具值

SetInterval 未获取最新的道具值

哔哔one 2022-10-08 18:05:52
我有一个反应组件,我们 isAlive作为一个道具传递给它,它具有false来自父组件的初始值,我不确定setInterval这个console.log人是否还活着。当道具更新时,最新值不会反映在运行时设置的间隔中,它始终保留原始值,即false.const printUserStatus = ({isAlive}) =>{    setInterval(() => {        if(isAlive === false){             console.log("the user is Dead");        }        else if(isAlive === true){             console.log("the user is Alive");        }     },1000);}更新:感谢mahdi方法,通过以下方式解决了它 -const printUserStatus = ({isAlive}) =>{    const isAliveRef = useRef(isAlive);    isAliveRef.current = isAlive;    setInterval(() => {        if(isAliveRef.current === false){             console.log("the user is Dead");        }        else if(isAliveRef.current === true){             console.log("the user is Alive");        }     },1000);}
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

如果您有意从某个异步回调中读取最新状态,则可以将其保存在 ref 中,对其进行变异并从中读取。

查看React 文档

基本上你看到的值是isAlive函数第一次被调用时的值。


查看完整回答
反对 回复 2022-10-08
?
侃侃无极

TA贡献2051条经验 获得超10个赞

检查这个 6 岁的答案关于如何 setInterval工作

https://stackoverflow.com/a/19123476/13647574

使用类似的东西useRef()来避免这种情况


查看完整回答
反对 回复 2022-10-08
  • 2 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号