报错 TypeError: Cannot read property ‘getAttribute‘ of null,echart初始化

  • Post author:
  • Post category:其他


vue的渲染机制导致echart初始化无法获取到dom元素研究

碰到的场景:

使用echart 初始化时报错:

报错 TypeError: Cannot read property ‘getAttribute‘ of null

排查发现:echarts.init(document.getElementById(“xxxx”))

其中的document.getElementById(“xxxx”) 为null ,也即无法获取到,dom元素。

<div v-if="getData.length>0">
    <div class="chart" id="echartNode"></div>
</div>

其中 getData 是从后台获取的数据, 需要dom节点挂载页面后,才能获取到echartNode 这个节点,做了v-if判断。所以修改为 v-show,发现还是无法获取。

最终排查发现可能是vue的渲染机制问题。添加setTimeout(()=>{},1000); 添加延时解决。

eg:

setTimeout(()=>{
let  echartsElment =  echarts.init(document.getElementById(“xxxx”));
// 后续对echartsElment设置。
},1000)

查看vue官网发现:


vue异步更新队列

惟求热泪盈眶与成就感

_

, 点个赞再走



版权声明:本文为change10000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。