用法(来自官网):在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。
有时候我需要获取一些组件,然后调用组件的一些东西,但是在初始化的过程中,这个组件还没有被渲染完成,也就是说无法调用,这个时候我们就可以使用这个方法的回调函数来进行获取。因为执行回调函数的之后dom已经更新循环结束,表示dom已经渲染完成。
举个比较明显的例子,就是这个ref,我我们使用子组件,并设置ref,然后就可以通过这个ref来调用子组件里面的一些方法。但是如果我们在create或者立即执行的watch里面进行调用的时候就会报出方法未定义,如下:
那么报出的异常是:
其实这个就是由于子组件还没有渲染完毕,直接调用就会导致异常的发生,所以我们将这两处的调用放在this.$nextTick(() => {})回调函数中,dom更新结束,就可正常的获取。
我这里有一个问题,有知道的,请帮忙回答一下:
如上所说,加入this.$nextTick(() => {})确实是可以成功,但是我发现有一种组件的导入方式,会导致这个方式的失败:
如果采用这种方式导入组件,即使使用this.nextTick还是会报出异常
但是如果才用这种导入方式就是正常的:
这个我不清楚是为什么,两种导入方式到底是有什么区别??????????????????????