首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理useEffect

处理useEffect
EN

Stack Overflow用户
提问于 2020-12-31 01:47:07
回答 2查看 32关注 0票数 0
代码语言:javascript
复制
const UserProfile = ({
  user=[],
}) =>{ 
  useEffect(() => {
    console.log("mounted")
    console.log("inside: "+user.id)
  },[]);
  
  console.log("outside :"+user.id)
   return(
    <Text>hello</Text>
  );
};

为什么这会返回这个日志?我认为useEffect中的user.id应该返回相同的

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-31 02:20:16

你的效果只会被调用一次,在挂载时。在挂载时没有设置user值,您可以在日志(outside :undefinedinside: undefined)中看到这一点。然后,当您将带有iduser传递给UserProfile组件时,不会调用effect,因为使用空的依赖数组注册effect表明,它将仅在挂载时调用。

请查看:https://reactjs.org/docs/hooks-effect.html (最后一个黄色注释部分)

如果您希望每次user属性更改时都调用您的效果,请将其添加到依赖项数组,如下所示:

代码语言:javascript
复制
useEffect(() => {
...
},[user])
票数 2
EN

Stack Overflow用户

发布于 2020-12-31 01:52:45

试试这个:

代码语言:javascript
复制
useEffect(() => {
  if (!user.id) {
    return
  }
  console.log("mounted")
  console.log("inside: "+user.id)
},[user])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65511310

复制
相关文章

相似问题

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