首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在useEffect的清理/返回方法中访问useState变量

在useEffect的清理/返回方法中访问useState变量
EN

Stack Overflow用户
提问于 2021-03-09 05:08:11
回答 1查看 75关注 0票数 0

我有一个这样的字段

代码语言:javascript
复制
const SimpleReactComponent = (props) => {
  const [title, setTitle] = useState('DEFAULT')

  useEffect(() => {
    return () => {
      // unmount 
      console.log(`[${title}] while unmounting`)
    }
  }, [])
  return <TextInput value={title} onChangeText={title => setTitle(title)}></TextInput>
}

当我修改title字段并离开此组件时,它仍然打印以下内容

代码语言:javascript
复制
[DEFAULT] while unmounting

而我期望的是新修改的值,而不是DEFAULT

如何在组件卸载时捕获更改?

EN

回答 1

Stack Overflow用户

发布于 2021-03-09 05:17:08

您需要在钩子的依赖项数组中添加title值。如果不是,则钩子将仅在组件挂载时运行,并将在该时间内记录初始值。在依赖项数组中添加标题将使useEffect在每次title值更改时进行侦听,并在您卸载组件时显示正确的值。

代码语言:javascript
复制
const SimpleReactComponent = (props) => {
  const [title, setTitle] = useState('DEFAULT')

  useEffect(() => {
    return () => {
      // unmount 
      console.log(`[${title}] while unmounting`)
    }
  }, [title])
  // Dependency array need the title to run everytime the value changes and when the unmount runs it will have the latest value!

  return <TextInput value={title} onChangeText={title => setTitle(title)}></TextInput>
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66537217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档