我有一個反應(yīng)組件,我們 isAlive作為一個道具傳遞給它,它具有false來自父組件的初始值,我不確定setInterval這個console.log人是否還活著。當(dāng)?shù)谰吒聲r,最新值不會反映在運行時設(shè)置的間隔中,它始終保留原始值,即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);}
SetInterval 未獲取最新的道具值
嗶嗶one
2022-10-08 18:05:52