依赖项useEffect的执行顺序问题

摘要:
*因此,这并不意味着没有依赖性。如果useEffect只写在顶部一次,它将首先修改如下。添加依赖项:useEffect。执行顺序是:父依赖props执行测试的钩子,然后执行一次无依赖的钩子,最后执行带有数据的依赖。我们可以得到最终结果。

场景:在需要进行修改操作,给整个表单赋值时,在子组件中有依赖父级项如props.test,父级props.test被修改了

子组件:

let [data, setData] = useState<array<any>>([])

useEffect(()=>{

//此处进行了一些初始化获取数据列表的操作

  setData([1,2,3])

},[])

useEffect(()=>{

//此处有根据初始化数据去遍历,转换得到值的操作

  let min = Math.min(...data)

  console.log(min)

},[props.test])

结果:会发现得到的并不是期望的最小值1;

因为此时子组件依赖父级props.test依赖项的useEffect会先执行,data此时是没有数据的,因为还没有执行第一个只执行一次的hook,因此结果不相符。

*所以并不是说没有依赖的,只执行一次的useEffect写在最上面就会先执行

修改如下,添加依赖项:

useEffect(()=>{

  let min = Math.min(...data)

  console.log(min)

},[props.test,data])

这样执行顺序就是:父级依赖项props.test的hook执行,然后是不带依赖项的hook执行一次,最后是带data的依赖项执行。

也就能得到最终结果了。

免责声明:文章转载自《依赖项useEffect的执行顺序问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android中AppWidget的分析与应用:AppWidgetProvider .记录一款Unity VR视频播放器插件的开发下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

HTML自定义标签与标签自定义属性

大部分浏览器支持自定义HTML标签和为标准标签自定义属性,而且很多浏览器对这两种自定义行为的支持都很直接了当。 自定义HTML标签 在firefox、chrome这种现代浏览器里,自定义标签很简单,就像标准的标签那样写就可以了,而且CSS和JavaScript存取自定义标签和标准标签并无二致。 1 2 3 4 5 6 7 8 9 <foo...

Django之POST GET与前后端交互

Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请求 GET 请求过程 前端通过ajax发起GET请求,json格式数据 var data = { "name": "test",...

MUI 学习---页面跳转;页面传参;接口数据请求;页面数据绑定;构建点击事件;回调刷新;数据列表支持从右向左滑动触发删除;拨打电话

1、页面跳转、页面传参、构建点击事件 /*给ul 下面的li 添加点击事件*/ mui('ul').on("tap", "li", function() { //获取html页面中data-item中的item对象 var obj = this.dataset.item;...

docker-Gitlab、GitLab Runner安装

以下操作均在CentOs下操作 1、Gitlab install ① 启动gitlab docker run --detach --hostname 115.30.149.35 --publish 8888:8888 --publish 24:22 --name gitlab --restart always --volume...

小白自制Linux开发板 七. USB驱动配置

本文章基于https://whycan.com/t_3087.htmlhttps://whycan.com/t_6021.html整理 F1c100s芯片支持USB的OTG模式,也就是可以通过更改UsbId拉低或拉高方式定义当前的开发板可以作为host还是device。 usbid 拉高时,开发板作为外设方式。 usbid 拉低时,开发板作为主机方式。...

CentOS PostgreSQL 12 主从复制(主从切换)

主从复制1.基于文件的日志传送 创建一个高可用性(HA)集群配置可采用连续归档,集群中主服务器工作在连续归档模式下,备服务器工作在连续恢复模式下(1台或多台可随时接管主服务器),备持续从主服务器读取WAL文件。 连续归档不需要对数据库表做任何改动,可有效降低管理开销,对主服务器的性能影响也相对较低。 直接从一个数据库服务器移动WAL记录到另一台服务器被称为...