关于vue生命周期中获取不到dom元素的问题

今天晚上,做毕设的时候遇到一个问题,在mounted生命周期钩子函数中获取不到dom元素,用一个div盒子包含dom元素,我给它添加了一个v-if指令,通过在mounted生命周期中发起http请求,获取数据后,根据是否有数据来决定是否显示这个盒子,但是在获取到数据后,通过this.$refs.box来获取这个dom元素,却获取不了。经过分析与实际操作,得出以下结论:

  1.在mounted钩子函数中,发送请求并获得返回数据后,再设置数据来显示这个盒子,表面上是可以的,

  2.但是:实际上,我们拿到数据后,并不会将数据马上渲染,

  3.因此,数据是拿到了,但是还不能赋值,

  4.因此,这个盒子v-if=‘false’,拿不到盒子里面的dom元素。

  此外,通过了一次实验,在created钩子函数中发送请求,在mounted钩子函数中console.log(“11111”),然后再发送一个请求。结果控制台执行的顺序是输出‘11111’,然后到created中的http请求,再到mounted中的请求。

  得出结论------http请求是异步的,最后再执行,这句话是没错的。(即使你在created中请求,异步的http请求还是后面再执行)

posted @ 2021-04-01 13:55  多敲才能行  阅读(4137)  评论(0)    收藏  举报