我可以在不使用useState的情况下访问useEffect中的变量吗?



我想在不使用useState的情况下访问useEffect钩子中的变量。我该怎么做呢?

这里是我的代码:

let numberOfLessons;
useEffect(() => {
getLessons()
.then(response => 
numberOfLessons = response.data().length // 6
})
.catch(error => {
console.log(error)
})
}, [])

console.log(numberOfLessons) // undefined

没有什么可以阻止你这样做。但缺点是你的变量不是React状态的一部分。

初始值设置为undefined。之后,当你将其设置为6时,将不会触发React重新渲染视图,所以你的6可能永远不会出现在屏幕上。

但也许这对你来说并不重要。如果这个变量只用于日志记录,那么React是否知道它并不重要。


在您的确切示例中,console.log是未定义的,因为您在设置值之前记录。这并不是React特有的问题。这就是异步代码的工作方式。如果你做了

setTimeout(() => console.log(numberOfLessons), 5000)

,你将得到6如预期。

相关内容

  • 没有找到相关文章

最新更新