我应该在组件中使用一个或多个useEffect吗?

我有一些副作用需要应用,我想知道如何组织它们:

  • 作为单一效应
  • 或者几种有用的效果

在性能和体系结构方面,什么更好

您需要遵循的模式取决于您的用例

首先,您可能会遇到这样的情况:您需要在初始装载期间添加事件侦听器,并在卸载时清理它们;在另一种情况下,需要清理特定侦听器,并在道具更改时重新添加。在这种情况下,使用两个不同的useEffect可以更好地将相关逻辑保持在一起,并具有性能优势

useffect(()=&gt{
//在此处装载时添加事件侦听器
返回()=&gt{
//清理这里的听众
}
}, []);
使用效果(()=&gt{
//每次props.x更改时添加侦听器
返回()=&gt{
//当props.x发生更改时删除侦听器
}
},[props.x])

Second:在某些情况下,当某个集合中的任何状态或道具发生变化时,您可能需要触发API调用或其他一些副作用。在这种情况下,最好使用一个带有相关值的useffect进行监控

useffect(()=&gt{
//更改任何道具.x或stateY时的副作用
},[props.x,stateY])

第三种情况:第三种情况是,当您需要对不同值的更改采取不同的操作时。在这种情况下,将相关比较分为不同的useffects

useffect(()=&gt{
//改变道具的一些副作用
},[props.x])
使用效果(()=&gt{
//改变stateX或stateY的另一个副作用
},[stateX,stateY])

发表评论