今天晚上,做毕设的时候遇到一个问题,在mounted生命周期钩子函数中获取不到dom元素,用一个div盒子包含dom元素,我给它添加了一个v-if指令,通过在mounted生命周期中发起http请求,获取数据后,根据是否有数据来决定是否显示这个盒子,但是在获取到数据后,通过this.$refs.box来获取这个dom元素,却获取不了。经过分析与实际操作,得出以下结论:
在mounted钩子函数中,发送请求并获得返回数据后,再设置数据来显示这个盒子,表面上是可以的,但是:实际上,我们拿到数据后,并不会将数据马上渲染,因此,数据是拿到了,但是还不能赋值,因此,这个盒子v-if=‘false’,拿不到盒子里面的dom元素。
此外,通过了一次实验,在created钩子函数中发送请求,在mounted钩子函数中console.log(“11111”),然后再发送一个请求。结果控制台执行的顺序是输出‘11111’,然后到created中的http请求,再到mounted中的请求。------http请求是异步的,最后再执行,这句话是没错的。