为什么这个 useRef 值在此 setInterval 中未定义?

Why is this useRef value undefined in this setInterval?

为什么在这个setInterval中引用了swissundefined

在每次迭代中,swiss 的值被传入。

export default function cheese() {
    const swiss = useRef("Jarlsberg")
    const myInterval = useRef()
    myInterval.current = setInterval ( swiss => {
        console.log(swiss) //-> undefined
        console.log(swiss.current) //-> Error b/c undefined has no properties
    }, 997)
}

这是因为您 setInterval 使用不当。在您的箭头函数中,您将 swiss 作为 参数 ,而不是 参数 (您传递的值)。当 setInterval 调用你的箭头函数时,它不会 传递任何参数 ,因此 swissundefined.

编辑:您可能还使用参数名称“隐藏”了真实的 swiss 值。通过我的测试,如果您删除参数或更改其名称,swisssetInterval 调用中可用。

export default function cheese() {
    const swiss = useRef("Jarlsberg")
    const myInterval = useRef();
    myInterval.current = setInterval ( () => { // note the change from `swiss` to an empty ().
        console.log(swiss) //-> exists!
        console.log(swiss.current) //-> Jarlsberg
    }, 997)
}