我有一个反应组件,我们 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);
}
慕桂英3389331
侃侃无极
相关分类