这个问题的出现,是因为组件使用了递归调用(组件里自己调用自己),删除事件是将子组件删除,本以为是在删除渲染完成后(也即是在nextTick里)执行emit向父组件输出最新数据,没想到父组件却没收到数据,百思不得其解,由此以为这是vue的诡异问题,今天恍然大悟,找到了问题的核心:
因为等待dom更新完后(nextTick回调),子组件已经不存在了,也就无法向父组件输出了,恰恰是要去掉nextTick,在dom更新之前把数据传出去,问题解决;
类似问题应该都是在处理完数据,等待同步dom完成(nextTick)后,父子关系发生了变化,emit的时效不对造成的,因此要细心检查,不然差点就要怀疑尤大的水平了…
setTimeout应该也是这个问题;当然,各自有各自的情况,但必然都是数据改变与dom完成前出现了其他情况,只是自己还没有发现,需要对vue的渲染步骤做仔细分析,才能找到问题在哪里;
以上处理是小编自己的情况,项目问题已解决,仅供参考;