【发布时间】:2020-09-09 09:36:45
【问题描述】:
我不明白为什么我的useEffect() React 函数无法访问我的组件的状态变量。当用户放弃在我们的应用中创建列表并导航到另一个页面时,我正在尝试创建日志。我正在使用 useEffect() return 复制 componentWillUnmount() 生命周期方法的方法。你能帮忙吗?
代码示例
let[progress, setProgress] = React.useState(0)
... user starts building their listing, causing progress to increment ...
console.log(`progress outside useEffect: ${progress}`)
useEffect(() => {
return () => logAbandonListing()
}, [])
const logAbandonListing = () => {
console.log(`progress inside: ${progress}`)
if (progress > 0) {
addToLog(userId)
}
}
预期行为
代码将到达addToLog(),导致此行为被记录。
观察到的行为
当用户在他们的列表中输入内容时会发生这种情况,导致 progress 增加,然后离开页面。
-
useEffect()方法完美运行,并触发logAbandonListing()函数 - 第一个
console.log()(useEffect以上)记录了大于 0 的progress状态 - 第二个
console.log()为progress状态记录0,禁用代码为if语句返回true并到达addToLog()函数。
环境
- 使用在 Firefox 76.0.1 中运行的 Next.js 构建的应用的本地开发环境
- nextjs v 8.1.0
- 反应 v 16.8.6
我真的很感激能帮助我理解这里发生的事情。谢谢。
【问题讨论】:
标签: reactjs next.js use-effect