我有一些副作用需要应用,我想知道如何组织它们:
- 作为单一效应
- 或者几种有用的效果
在性能和体系结构方面,什么更好
您需要遵循的模式取决于您的用例
首先,您可能会遇到这样的情况:您需要在初始装载期间添加事件侦听器,并在卸载时清理它们;在另一种情况下,需要清理特定侦听器,并在道具更改时重新添加。在这种情况下,使用两个不同的useEffect可以更好地将相关逻辑保持在一起,并具有性能优势
useffect(()=>{
//在此处装载时添加事件侦听器
返回()=>{
//清理这里的听众
}
}, []);
使用效果(()=>{
//每次props.x更改时添加侦听器
返回()=>{
//当props.x发生更改时删除侦听器
}
},[props.x])
Second:在某些情况下,当某个集合中的任何状态或道具发生变化时,您可能需要触发API调用或其他一些副作用。在这种情况下,最好使用一个带有相关值的useffect进行监控
useffect(()=>{
//更改任何道具.x或stateY时的副作用
},[props.x,stateY])
第三种情况:第三种情况是,当您需要对不同值的更改采取不同的操作时。在这种情况下,将相关比较分为不同的useffects
useffect(()=>{
//改变道具的一些副作用
},[props.x])
使用效果(()=>{
//改变stateX或stateY的另一个副作用
},[stateX,stateY])