欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue中封裝eCharts組件及優(yōu)化方式

 更新時間:2024年03月12日 08:36:26   作者:Lim_J  
這篇文章主要介紹了Vue中封裝eCharts組件及優(yōu)化方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Vue封裝eCharts組件及優(yōu)化

Vue中想要使用eCharts作為一個單獨的組件進行封裝,一般需要考慮的是option的封裝、視口變化或數據變化更新eCharts視圖,以及在組件銷毀之前注銷eCharts組件以釋放其占用的內存。

option的封裝思路

一般情況下,一個業(yè)務模塊內eCharts的風格只有固定的幾種內容,因此僅需要對固定的幾種模式進行封裝即可,我這里采用生成option的方式節(jié)約代碼量

generateOptionFrom(originalChartData, options = {}) {
	// do something with originalData
	let series = doSomething(originalChartData);
	return {
		name: '',
		legend: [],
		tooltip: {},
		// ...
		series,
		...options
	};
}

eCharts組件封裝要點

eCharts組件和直接在js中更新eCharts有些許不同,js調用時,數據更新需要調用API中的setOption,Vue組件中想要更新組件,由于數據并不是掛載到DOM屬性上的,因此需要用watch監(jiān)聽數據更新

<template>
	<div class="charts" ref="eCharts">
    </div>
</template>
<script>
import * as echart from 'echarts';
export default {
	 props: {
        options: {
            type: Object
        },
        height: {
            type: String,
            default: '300px'
        }
    },
    mounted() {
    	// eCharts在初始化的時候有時捕捉不到元素高度,這里手動設置一下
        this.$refs.eCharts.style.height = this.height;
        this.$nextTick(() => {
            this.initChart(this.options);
        });
    },
    beforeDestroy() {
    	// 組件銷毀時主動釋放eCharts內存空間
        const chartsInstance = echart.getInstanceByDom(this.$refs.eCharts);
        chartsInstance && chartsInstance.dispose();
        window.onresize = null;
    },
    watch: {
		options() {
			const chartsInstance = echart.getInstanceByDom(this.$refs.eCharts);
        	chartsInstance && chartsInstance.setOption(this.options);
		}
	},
	methods: {
		initChart() {
			if (!this.$refs.eCharts) {
				// 確保執(zhí)行初始化時Container存在
				return;
			}
			const chartInstace = echart.init(this.$refs.eCharts);
			chartInstace.setOption(this.options);
			// 視口大小變化時調用resize調整eCharts大小,如果Container尺寸并非自適應則無需設置
			window.onresize = function () {
				chartInstace.resize();
			};
			// ...add other operations or events
		}
	}
}
</script>

這里使用ref去找Container元素是利用Vue的優(yōu)勢,比起使用選取dom的方式方便很多

Vue封裝echarts組件多次調用出現id重復

問題描述

封裝的echarts組件多次被調用,id重復,導致頁面不渲染、數據覆蓋等一系列問題

解決方法

1、把id改成動態(tài)傳參(這里就不作代碼展示了)

2、把id換成ref

//修改前 
<div id="vcharts" style="width: 100%; height: 500px"></div>
//修改后
<div ref="vcharts" style="width: 100%; height: 500px"></div>
   
//修改前
let myChart = this.$echarts.init(document.getElementById("vcharts"));
//修改后
let myChart = this.$echarts.init(this.$refs.vcharts);

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue3使用echarts繪制儀表盤

    Vue3使用echarts繪制儀表盤

    這篇文章主要為大家學習介紹了Vue3如何使用echarts實現繪制儀表盤,文中的示例代碼積極學習,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-07-07
  • VUE2.0+ElementUI2.0表格el-table實現表頭擴展el-tooltip

    VUE2.0+ElementUI2.0表格el-table實現表頭擴展el-tooltip

    這篇文章主要介紹了VUE2.0+ElementUI2.0表格el-table實現表頭擴展el-tooltip,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Vue中$forceUpdate()的使用方式

    Vue中$forceUpdate()的使用方式

    這篇文章主要介紹了Vue中$forceUpdate()的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue異步更新DOM及$nextTick執(zhí)行機制解讀

    Vue異步更新DOM及$nextTick執(zhí)行機制解讀

    這篇文章主要介紹了Vue異步更新DOM及$nextTick執(zhí)行機制解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue2 vue3中使用Echarts詳細

    vue2 vue3中使用Echarts詳細

    這篇文章主要給大家介紹的是vue2 vue3中使用Echarts的相關資料,下面文章 會詳細介紹該內容,感興趣的小伙伴不要錯過喲
    2021-09-09
  • vue3+xgplayer實現短視頻功能詳解

    vue3+xgplayer實現短視頻功能詳解

    短視頻應用的流暢性和用戶交互性在用戶體驗中扮演著重要角色,本文將展示如何通過?Vue?3?和?XGPlayer來實現這些功能,感興趣的小伙伴可以了解下
    2025-02-02
  • 詳解Vue CLI3配置之filenameHashing使用和源碼設計使用和源碼設計

    詳解Vue CLI3配置之filenameHashing使用和源碼設計使用和源碼設計

    這篇文章主要介紹了詳解Vue CLI3配置之filenameHashing使用和源碼設計使用和源碼設計,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Vue.js教程之計算屬性

    Vue.js教程之計算屬性

    Vue.js 的內聯(lián)表達式非常方便,但它最合適的使用場景是簡單的布爾操作或字符串拼接。這篇文章給大家介紹了Vue.js教程之計算屬性,非常不錯,感興趣的的朋友一起看看吧
    2016-11-11
  • Vue實現購物小球拋物線的方法實例

    Vue實現購物小球拋物線的方法實例

    這篇文章主要給大家介紹了Vue實現購物小球拋物線的方法實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • vue復合組件實現注冊表單功能

    vue復合組件實現注冊表單功能

    這篇文章主要為大家詳細介紹了vue復合組件實現注冊表單功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論