Vue 开发实战实战篇 # 34:如何在组件中使用EChartsAntv等其他第三方库

Posted 凯小默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue 开发实战实战篇 # 34:如何在组件中使用EChartsAntv等其他第三方库相关的知识,希望对你有一定的参考价值。

说明

【Vue 开发实战】学习笔记。

效果

这里我们使用 echarts 为例在项目里面添加 echarts 库

安装依赖

npm i echarts resize-detector

Chart.vue

<template>
    <div ref="chartDom"></div>
</template>

<script>
import * as echarts from 'echarts';
import debounce from "lodash/debounce";
import  addListener, removeListener  from "resize-detector";
export default 
    props: 
        option: 
            type: Object,
            default: () => 
        
    ,
    watch: 
        option(val) 
            console.log("watch--->", val)
            this.chart.setOption(val);
        
    ,
    created() 
        this.resize = debounce(this.resize, 300);
    ,
    mounted() 
        this.renderChart();
        addListener(this.$refs.chartDom, this.resize);
    ,
    beforeDestroy() 
        removeListener(this.$refs.chartDom, this.resize);
        this.chart.dispose();
        this.chart = null;
    ,
    methods: 
        resize() 
            console.log("resize")
        ,
        renderChart() 
            // 基于准备好的dom,初始化echarts实例
            this.chart = echarts.init(this.$refs.chartDom);
            // 使用刚指定的配置项和数据显示图表。
            this.chart.setOption(this.option);
        
    ,
;
</script>

<style></style>

分析页引用 Chart 组件

<template>
    <div ref="chartDom"></div>
</template>

<script>
import * as echarts from 'echarts';
import debounce from "lodash/debounce";
import  addListener, removeListener  from "resize-detector";
export default 
    props: 
        option: 
            type: Object,
            default: () => 
        
    ,
    watch: 
        option(val) 
            console.log("watch--->", val)
            this.chart.setOption(val);
        
    ,
    created() 
        this.resize = debounce(this.resize, 300);
    ,
    mounted() 
        this.renderChart();
        addListener(this.$refs.chartDom, this.resize);
    ,
    beforeDestroy() 
        removeListener(this.$refs.chartDom, this.resize);
        this.chart.dispose();
        this.chart = null;
    ,
    methods: 
        resize() 
            console.log("resize")
        ,
        renderChart() 
            // 基于准备好的dom,初始化echarts实例
            this.chart = echarts.init(this.$refs.chartDom);
            // 使用刚指定的配置项和数据显示图表。
            this.chart.setOption(this.option);
        
    ,
;
</script>

<style></style>

参考资料

以上是关于Vue 开发实战实战篇 # 34:如何在组件中使用EChartsAntv等其他第三方库的主要内容,如果未能解决你的问题,请参考以下文章

Vue 开发实战基础篇 # 8:如何触发组件的更新

Vue 开发实战实战篇 # 45:如何构建可交互的组件文档让代码高亮的显示在页面

Vue 开发实战实战篇 # 43:如何做好国际化

Vue 开发实战实战篇 # 46:如何做好组件的单元测试

Vue 开发实战基础篇 # 13:如何优雅地获取跨层级组件实例(拒绝递归)

Vue 开发实战基础篇 # 2:组件基础及组件注册