vue3+ts+vite项目使用echarts打包后图表不显示

文章讲述了在项目中使用Echarts时遇到的问题,即图表在本地正常显示,但打包上传服务器后,第二次加载变成空白。作者推测可能是容器丢失或渲染问题,并发现重复id可能导致渲染失败。为解决此问题,作者选择了销毁实例并在重新渲染时创建新实例的方法,提供了相关代码实现,并经过测试确认问题已解决。

前言:

        项目还是那个项目,就是在项目中使用echarts的时候,在项目中正常显示,但是打包之后放在服务器上之后,图表初次加载没问题,但是第二次加载一片空白!!!

推测:

        1、图表盛放的容器没了或是渲染图表之前,图表id为获取到,

        2、渲染问题

一番排查之后,使用重复的id进行渲染,是有可能导致图表二次渲染失败的。

为了避免这个问题,要么使用大量不重复id,要么销毁实例,再次渲染的时候重新创建

对比之后,第一种方法会产生大量闲置id,果断使用第二种

代码如下,dispose为销毁实例方法


const myLintChart = ref()
// 图表
const linetypeChart = (datax: string[], datay: any[]) => {
	if (myLintChart.value !== undefined) {
		myLintChart.value.dispose()
	}
	// 基于准备好的dom,初始化echarts实例
	myLintChart.value = echarts.init(
		document.getElementById('chartId') as HTMLElement
	)
	// 绘制图表
	const option = {
		title: {
			text: '折线图'
		},
		tooltip: { trigger: 'axis' },
		xAxis: {
			type: 'category',
			boundaryGap: false,
			data: datax
		},
		yAxis: {
			type: 'value'
		},
		series: datay
	}
	myLintChart.value.setOption(option)
}

测试

测试之后,再次打包,打包之后的图表正常显示! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值