javascript - 我可以在不使用 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
预期的结果。
推荐阅读
- javascript - 样式显示时如何添加过渡?
- rust - 将double转换为float时如何确定舍入方向?
- r - 使用 Splashr 等待完整的页面加载
- reactjs - 路径似乎对图像是正确的,但我的 svg 没有显示
- c# - 为什么当我的鼠标统一悬停在一个对象上时,它称它为错误的对象?
- javascript - 我将如何保持用户令牌状态,以便即使刷新我的按钮也会保留在页面上?
- javascript - 获取'/'之前的最后一个值
- sequelize.js - 使用“include.where”获取关联模型时包含关联模型中的所有实例
- ecdsa - 无法验证由 sol-wallet-adapter 签名的消息
- react-native - 当我们可以使用静态变量时,为什么还要使用 Context API?