版本 vue3.2.47 echarts5.4.1

使用响应式对象存储 echarts 实例,导致 tooltip 功能失效;

原因:Vue3 使用 proxy 对象代理,而 echarts 则使用了大量的全等(===), 对比失败从而导致了bug。

解决方法:将ref或reactive对象换成普通变量来保存 echarts 实例。

  • 初始化图表
// 初始化柱状图
function initBarChart(data) {
	const myChart = echarts.init(unref(barRef));
	const option: EChartsOption = {
	    color: ['#3398DB'],
	    tooltip: {
	        trigger: 'axis',
	        axisPointer: { type: 'shadow' }
	    },
	    grid: {
	        left: '3%',
	        right: '4%',
	        bottom: '3%',
	        containLabel: true
	    },
	    xAxis: [
	        {
	            type: 'category',
	            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
	            axisTick: { alignWithLabel: true }
	        }
	    ],
	    yAxis: [{ type: 'value' }],
	    series: [
	        {
	            name: '直接访问',
	            type: 'bar',           
	            data: [10, 52, 200, 334, 390, 330, 220]
	        }
	    ]
	};	

	myChart.setOption(option);
}
  • 更新图表数据
// 更新柱状图
function updateBarChart(data) {
	const getLineChartInstance = echarts.getInstanceByDom(unref(barRef)!);
	getLineChartInstance && getLineChartInstance.setOption({ series: [{ data }] });
}

更多推荐