这几天在做echarts主题切换,顺手记录一下
echarts在切换主题之后,cavans得重新绘制,所以在每个echarts组件里要写很多这种代码
legend: {
color:sideTheme == 'theme-dark'?'#000':'#fff'
}
想了想觉得很麻烦,参考了下官网的主题配置,最终决定全局配置主题
先在官网配置好想要的主题
配置好之后选择下载主题,选择js版本下载。(json版本的复制下来用不了,我没研究出来。)
下载好之后的js文件是这样
直接运行也不行,改成这样
只保留最核心的注册主题的代码
echarts.registerTheme('你的主题名称' ,{}
js文件需要在main.js中引入一下
//导入全局echarts主题文件
import '@/echarts/index.js'
在echarts初始化时,将主题传进去
charts.value = echarts.init(myCharts.value, 你的主题名称);
切换主题时,需要重新初始化,要销毁实例之后在重新init
watch(
() => sideTheme.value,
(value) => {
tooltipTimer.value && tooltipTimer.value.clearLoop();
tooltipTimer.value = null;
charts.value.dispose(); //销毁实例 重点!!
charts.value.clear();
charts.value = null
charts.value = echarts.init(myCharts.value, sideTheme.value + '-bar');
initPage();
}
);
用了主题文件之后,页面的echarts不要重复配置,否则会被覆盖,会没效果。
比如这个,在全局已经配置了axisLine这个项,在echarts到option里面就不要再配置了
问题:
1、主题配置文件貌似不能给不同类型的图表配置不同的线条样式,我的bar类型和line类型的x、y轴线条样式不一样,最终只能配置了多个主题来解决
2、主题配置的配置项不是很完整,比如环形图中间的文字,还是要去环形图的echarts配置项中配置。
总得来说,还是很麻烦。。。。
如果大家有更好的方法,望告知 ^_^