为啥此 setInterval 中未定义此 useRef 值?

Posted

技术标签:

【中文标题】为啥此 setInterval 中未定义此 useRef 值?【英文标题】:Why is this useRef value undefined in this setInterval?为什么此 setInterval 中未定义此 useRef 值? 【发布时间】:2020-09-25 15:21:57 【问题描述】:

为什么在这个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)

【问题讨论】:

【参考方案1】:

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

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

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)

【讨论】:

以上是关于为啥此 setInterval 中未定义此 useRef 值?的主要内容,如果未能解决你的问题,请参考以下文章

JAXB:为啥在生成的 xml 文档中未使用定义的命名空间前缀?

为啥我在打开我的 wordpress 网站时收到此消息(如何解决)?

为啥此语句在 java x ^= y ^= x ^= y 中不起作用;

为啥在 C# 的字符串中未检测到“空白”?

无法读取电子 javascript 中未定义的属性“on”

Nuxt vuex状态菜单列表:组件中未定义