首页 > Vue >

[已解决]在$nextTick或setTimeout里执行$emit不生效的问题

时间: 作者:admin 浏览:

这个问题的出现,是因为组件使用了递归调用(组件里自己调用自己),删除事件是将子组件删除,本以为是在删除渲染完成后(也即是在nextTick里)执行emit向父组件输出最新数据,没想到父组件却没收到数据,百思不得其解,由此以为这是vue的诡异问题,今天恍然大悟,找到了问题的核心:

因为等待dom更新完后(nextTick回调),子组件已经不存在了,也就无法向父组件输出了,恰恰是要去掉nextTick,在dom更新之前把数据传出去,问题解决;

类似问题应该都是在处理完数据,等待同步dom完成(nextTick)后,父子关系发生了变化,emit的时效不对造成的,因此要细心检查,不然差点就要怀疑尤大的水平了…

setTimeout应该也是这个问题;当然,各自有各自的情况,但必然都是数据改变与dom完成前出现了其他情况,只是自己还没有发现,需要对vue的渲染步骤做仔细分析,才能找到问题在哪里;

以上处理是小编自己的情况,项目问题已解决,仅供参考;

微信公众号
微信公众号:
  • 前端全栈之路(微信群)
前端QQ交流群
前端QQ交流群:
  • 794324979
  • 734802480(已满)

更多文章

栏目文章


Copyright © 2014-2023 seozhijia.net 版权所有-粤ICP备13087626号-4