在VUE里面获取dom和使用echarts
去vue官网好好看看ref和nextTick
首先说一下原因吧,就是echarts里面需要使用dom来挂载画布,这就意味着我们要获取dom,获取dom的方法呢有几种,普遍的就是getElementById,在vue里面还有一种方法,就是使用ref,在标签中写上ref=“test”,在methods里面就使用this.$ref.test
就可以实现获取dom,这里要注意$ref
要注意下面两点。
1、ref 需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期 mounted(){} 钩子中调用,或者在 this.$nextTick(()=>{})
中调用。
这里项目里面就是在mounted(){} 钩子中调用,调用后使用了if(this.$ref.test)
来判断是否为空,跳过空状态。注意这个不能直接判断而不使用mounted,不然可就是真的空着的了。
this.$nextTick(()=>{})
这个的意思就是说在dom状态更新之后立即执行回调函数,这就是说获取新的dom,可以看看下面的博客。记住要点,vue对dom的更新diff是异步的。
https://www.jianshu.com/p/98148196a1f2
2、如果ref 是循环出来的,有多个重名,那么ref的值会是一个数组 ,此时要拿到单个的ref 只需要循环就可以了。