前端踩坑小结:当elementui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题

今天写VUE时我在elementui的el-dialog组件中包含了一个子组件。

前端踩坑小结:当elementui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题


然后我通过$refs调用该子组件里面的方法,在控制台上却显示undefined。


前端踩坑小结:当elementui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题

前端踩坑小结:当elementui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题


因为自己之前用过refs来调用子组件方法,但是没有遇到过这种问题,刚开始自己觉得可能是因为执行顺序的问题,就用promise来写。

前端踩坑小结:当elementui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题

可以看到还是同样的问题,后来找到了一个土方法setTimeout,通过这样来保证程序的执行顺序。前端踩坑小结:当elementui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题

结果成功运行,完美解决了问题。

后来在网上找了一下,初步估计应该是elementUI的组件渲染顺序问题。但是我依然还是一头雾水,为什么我用promise也不行?而且为什么要用setTimeout来运行单

独的一条语句refs才可以?到底这个问题是怎么产生的呢?希望有大神能够在评论区告诉我一下。


对了,在上面图片中setTimeout里面的方法是refs,也就是说当控制对话框弹出的变量为true后,再运行refs才可以,如果说我把refs和this.dialogVisible=true的位置

对换一下,这个程序也是会报错的。

前端踩坑小结:当elementui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题

前端踩坑小结:当elementui的el-dialog组件中包含子组件时,用refs调用子组件时的undefined问题