在vue3中使用echarts不显示tooltip问题
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
在vue3中发现无法出现tooltip,点击顶部示例无法更新问题
问题描述
最近在Vue3项目中使用ECharts5.0制作统计图表,发现配置一切正常,但是tooltip无论如何就是无法显示,所以排查了下原因,发现是ECharts与Vue的响应性特性存在兼容性问题。
问题原因
ECharts在Vue3环境下,使用ECharts5.0+版本会出现该问题。原因是echarts实例不能由Vue来维护(Vue的响应性特性)。
原因: 因vue3中使用了Proxy对象代理,但echarts中使用了大量的===造成对比失败。
处理办法:对Proxy对象进行拆箱。
此时在代码中添加
const unwarp = (obj) => obj && (obj.__v_raw || obj.valueOf() || obj);
在setOption时
unwarp(this.chartObj).setOption(optionData, true);
全部代码如下
<template>
<div class="basicCharts" ref="_chart"></div>
</template>
<script>
const unwarp = (obj) => obj && (obj.__v_raw || obj.valueOf() || obj);
export default {
name: "basicCharts",
props: {
},
data() {
return {
chartObj: null,
};
},
mounted() {
this.initChart();
},
destroyed() {
this.chartObj && this.chartObj.dispose();
window.removeEventListener("resize", this.resizeChart);
},
methods: {
initChart() {
this.chartObj = this.$echarts.init(this.$refs._chart);
window.addEventListener("resize", this.resizeChart);
},
updateChart(optionData) {
console.log(optionData)
unwarp(this.chartObj).setOption(optionData, true);
},
resizeChart() {
this.chartObj && this.chartObj.resize();
},
},
};
</script>
<style lang="scss" scoped>
.basicCharts {
width: 750px;
height: 400px;
// width: 100%;
// height: 100%;
}
</style>
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)