子组件中的setInterval重新发布整个应用程序



这件事困扰了我一段时间,我认为是时候解决这个问题了。

在Codesandbox.io中,您可以看到Countdown组件重新发布整个父组件。只有当我显示"子组件"时才会发生这种情况。您可以尝试替换为和计数器,但只能重新发送本身。

帮我吧,因为我不知道为什么反应会这样。

谢谢!

在计数器组件中,您正在调用setState(setCounter(,它正在更新父组件的状态。当使用useState Hook更新父组件的状态时。它将重新渲染整个组件,当整个组件被重新渲染时,你已经声明了

const SubComponent = () => {
return <SubSubComponent />;
};

该子组件将再次被声明和初始化(每次组件被重新渲染时(。

实际上没有必要在应用程序组件中声明这个子组件,你可以简单地使用它

如果你不希望组件每次都得到它的新实例,你可以使用记忆等技术,这样子组件只有在道具中的东西发生变化时才能重新渲染。此外,只有当依赖项中的某些内容发生更改时,才使用回调来创建新函数。

在Codesandbox.io中,您可以看到Countdown组件重新发布整个父组件。只有当我显示"子组件"时才会发生这种情况

即使您是否有子组件,它也会重新提交父组件,因为状态存在于父应用程序组件中。

你的子组件也会被重新渲染,因为每次你都在创建它的新实例

相关内容

最新更新