首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >响应早于父useEffect触发的子useEffect

响应早于父useEffect触发的子useEffect
EN

Stack Overflow用户
提问于 2021-01-11 09:21:23
回答 1查看 665关注 0票数 0

当应用程序呈现时,子组件useEffect触发的时间早于父层useEffect。为什么会发生这种情况,以及如何解决这个问题?请指点

层:

代码语言:javascript
复制
const Layer = (p) => {
     useEffect(() => {
         console.log(token, "Layer token");
     }, []);
    return (
        <>
            {p.children}
        </>
    )
}
export default Layer;

组件:

代码语言:javascript
复制
const Component = () => {
     useEffect(() => {
         console.log(token, "Component token");
     }, []);
    return (
        <></>
    )
}
export default Component;

使用:

代码语言:javascript
复制
<Layer>
 <Component/>
</Layer>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-11 09:52:39

您只需在Layer组件中有一个呈现条件:

代码语言:javascript
复制
const Layer = (p) => {
  const [isCalled, setIsCalled] = React.useState(false);
  React.useEffect(() => {
    if (!isCalled) {
      console.log("A");
      setIsCalled(true);
    }
  }, [isCalled]);
  return <>{isCalled && p.children}</>;
};

const Component = () => {
  React.useEffect(() => {
    console.log("B");
  }, []);
  return <></>;
};

日志:"A","B“。

https://codesandbox.io/s/render-condition-call-80rc8

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65664134

复制
相关文章

相似问题

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