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

Can I access a variable inside useEffect without use useState?

我想在不使用 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