我想在不使用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
如预期。