我应该在组件中使用一个还是多个useEffect?

瓦迪姆:

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

  • 一次性使用
  • 或多次使用

在性能和体系结构方面有什么更好的选择?

Shubham Khatri:

您需要遵循的模式取决于您的useCase。

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

useEffect(() => {
   // adding event listeners on mount here
   return () => {
       // cleaning up the listeners here
   }
}, []);

useEffect(() => {
   // adding listeners everytime props.x changes
   return () => {
       // removing the listener when props.x changes
   }
}, [props.x])

第二:在某些状态或道具在一组中改变时,可能需要触发API调用或其他副作用。在这种情况下,一个useEffect具有相关值进行监视的个人应该是一个好主意

useEffect(() => {
    // side effect here on change of any of props.x or stateY
}, [props.x, stateY])

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

useEffect(() => {
   // some side-effect on change of props.x
}, [props.x])

useEffect(() => {
   // another side-effect on change of stateX or stateY 
}, [stateX, stateY])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该在Algolia中使用一个索引还是多个索引?

react-popper:我应该在同一页面上使用一个<Manager>组件还是多个?

我应该在Electron桌面应用程序中使用单独的javascript文件还是仅使用一个大文件?

我应该在Angular的可重用组件中使用EventEmitter还是共享服务?

我们可以在同一个 div 中使用 row 和 col-md-12 吗?还是应该在父子 div 中?

我应该在 Javascript 中使用多个变量还是单个对象?

我应该在POSIX shell中使用“ test”还是“ [”“]”?

我应该在JSFiddle中使用:after还是:: after?

我应该在“ this”中使用bind还是关闭别名?

我应该在一个集合中有多个文档还是在一个文档中有多个对象/数组元素?

我应该在一个实例中为多个工作节点或多个 VM 使用多个 aws 实例吗?

我应该在另一个状态更新中更新状态,我应该还是不应该?

我应该在同一类中使用getXXX()还是(private)变量?

一个根应该用于整个聚合图,还是多个根应该在同一图中?

对于这种情况,我应该在SQL中使用嵌套的select或创建一个临时表吗?

我应该在 Django 项目中使用 LF 和 CRLF 中的哪一个?

我应该在每次使用它时创建一个全新的SqlConnection,还是每次都尝试重新打开一个现有的连接?

我应该在角度5中使用多个服务文件还是对所有功能使用1个文件?

Mojolicious:我应该使用一个还是多个Websocket?

我应该在请求中创建executorService还是在Web应用程序中共享一个实例?

我应该在控制器中设置父级,还是一个糟糕的主意?

我应该在R中使用crossprod还是基函数来计算两个向量的距离平方平方?

我应该在哪里放置一个我想在多个控制器中使用的函数,而不仅仅是在我创建它的控制器中?

我应该在React中使用哪种类型的组件:功能组件或类基础组件?

我应该在 crontab 中使用 1,15 还是 */15 每 15 天运行一次命令?

使用Hooks和Redux的ReactJS良好实践。我应该在每个组件中使用useSelector还是应该通过道具传递?

我应该在Angular 4+应用程序中为每个组件创建一个模块吗?

我应该在React组件中初始化一个空状态变量吗?

如果在多个函数作用域中使用变量,是否应该在私有类中声明一个变量?