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

简介: 【Vue 开发实战】实战篇 # 34:如何在组件中使用ECharts、Antv等其他第三方库

说明

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



效果

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

安装依赖

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>
目录
相关文章
|
1月前
|
JavaScript 数据库
ant design vue日期组件怎么清空 取消默认当天日期
ant design vue日期组件怎么清空 取消默认当天日期
|
1月前
|
JavaScript C++
vue高亮显示组件--转载
vue高亮显示组件--转载
26 0
|
4天前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
21 2
|
4天前
|
JavaScript 前端开发 API
【vue实战项目】通用管理系统:学生列表
【vue实战项目】通用管理系统:学生列表
16 2
|
4天前
|
缓存 JavaScript
【vue实战项目】通用管理系统:首页
【vue实战项目】通用管理系统:首页
11 2
|
5天前
|
JavaScript
Vue.js中实现自定义组件的双向绑定
Vue.js中实现自定义组件的双向绑定
|
5天前
|
JavaScript
Vue.js中使用作用域插槽实现自定义表格组件
Vue.js中使用作用域插槽实现自定义表格组件
|
9天前
|
缓存 JavaScript 前端开发
Nuxt.js实战:Vue.js的服务器端渲染框架
Nuxt.js提供了开发、构建和部署的完整工作流。使用nuxt命令启动开发服务器,nuxt build进行生产构建,nuxt start启动生产服务器
16 0
|
10天前
|
JavaScript
vue强制刷新组件
vue强制刷新组件
19 0
|
10天前
|
JavaScript