我不明白为什么我的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()
用于日志0progress
状态,禁用代码返回true
的if
语句,并达到addToLog()
功能。
环境
- 使用 Next.js 构建的应用程序的本地开发环境在 Firefox 76.0.1 中运行
- nextjs v 8.1.0
- react v 16.8.6
我真的很感激一些帮助理解这里发生的事情。谢谢。