Cannot read property getAttribute of null
這個問題我改了半個多小時,又百度型诚,又請教的蠕啄,終于在一位博主的文章中找到了原因和解決方案,希望有遇到相同問題的人混槐,能夠快速得到解決编兄,所以,今天為這個問題的解決方法做一個記錄
在解決問題的過程中声登,使用了以下方法
報錯代碼:
mounted() {
// ...
this.drwaCharts() // drawCharts方法為自己定義的包含渲染 echarts 圖表的方法
// ...
}
之前一直用 echarts 沒有出現(xiàn)過這個問題狠鸳,所以當(dāng)這個問題出現(xiàn)時我就開始了各種查揣苏,試了幾種方法依舊報錯,比如:
1件舵、在mounted() {}卸察,使用 nextTick(() => {
this.drawCharts()
});
2、使用 setTimeout 包裹: (依舊報錯)
setTimeout(() => {
this.drawCharts()
}, 1000);
3铅祸、正確的方法
因為我在包裹echarts標(biāo)簽的最外層加了v-if坑质,所以導(dǎo)致了報錯,只要把v-if改成v-show就可以了~
報錯分析
報錯地點: 在放 echarts 圖表的 div 使用了 v-if 指令临梗,在綁定的值為 false 時會報此錯涡扼,而值為 true 時候不會報錯。
原因分析:
我們都知道盟庞,在切換顯示與隱藏很少的情況下吃沪,使用 v-if 會性能更好,所以我根據(jù)實際情況首先選擇了 v-if 指令什猖。但是因為隱藏的時候票彪, v-if 會使整個 dom 節(jié)點不渲染,而 v-show 只是給 dom 節(jié)點加了 display: none;屬性卸伞,節(jié)點依然存在 抹镊。所以在這種特殊的情況下,由于 v-if 值為 false 時候mounted 中畫圖的方法依然會執(zhí)行荤傲,在獲取 dom 節(jié)點時獲取不到垮耳,所以就會導(dǎo)致報錯。