今天來說一個一直以來老是被我忽略的知識點,關於vue裏的ref。需求是這樣的:html
在頁面初次渲染的時候動態生成這樣一個餅圖列表,我用的是echarts,你們都知道echarts的每個chart都是要綁定到單獨的id裏去,那麼在vue裏,確定用的是ref。vue
在下愚鈍,以前總覺得ref必定要是惟一的,這也怪本身不多看文檔,因此想着怎麼樣給每個li都加上單獨的ref,天然而然的就想到了利用li的index:數組
<ul class="section__content">
<li class="asset-pie-chart" v-for="(item,index) in deviationCharts" :key="index" :ref="deviationChart+'index'" ></li>
</ul>
複製代碼
而後在數組的循環裏動態獲取每個ref。echarts
看上去彷佛沒毛病吧。dom
而後發現沒用,獲取不到ref元素。ui
調試後,發現兩個問題:this
$nextTick
。this.$nextTick(() => {
console.log(this.$refs.deviationCharts);
//deviationCharts爲統一ref
let deviationChart = echarts.init(this.$refs.deviationCharts[index]);
deviationChart.setOption(option);
deviationChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: 0
}); //設置默認選中高亮部分
});
複製代碼