vue3封裝echarts組件---通俗易懂

1、封裝的原因

如果在vue項目中有多個組件或者同個組件多出地方需要不同的圖表,因此自己封裝一個方便多次復用的Mycharts圖表組件。

2、具體步驟:

2.1 安裝echarts

pnpm i echarts --save

2.2 新建MyCharts組件?:

~components/echarts/MyCharts.vue:

這里需要引入echarts:

import * as echarts from 'echarts';

<template><div><!-- 準備一個有寬高的dom ———— 其他內容從父組件傳過來 --><div :id="uid" :style="style"></div></div>
</template>
<script setup>
import { ref, reactive, computed, onMounted, nextTick } from 'vue'
import * as echarts from 'echarts';
const props =  defineProps({dataSource: {type: Object,default: null,required: true},canvasWidth: {type: String,default: '',required: true},canvasHeight: {type: String,default: '',required: true}
})
const uid = ref('')
const myChart = ref(null)
// 時間戳+隨機字符
uid.value = new Date().getTime() + Math.random().toString(32).slice(2, 10)
console.log('uid:', uid.value);let style = computed(() => ({width: props.canvasWidth,height: props.canvasHeight
}))
console.log('style:', style.value);const init = () => {// 基于準備好的dom,初始化echarts實例myChart.value = echarts.init(document.getElementById(uid.value))// 繪制圖表myChart.value.setOption(props.dataSource)
}
onMounted(() => {// nextTick(() => {//     init()// })init()
})</script>
<style scoped></style>

2.3 需要調用MyCharts組件的父組件:

<template><div :style="{ transform: `scale(${scale})` }"><div class="title">封裝echarts圖表</div><!-- 調用圖表組件 --><MyCharts :dataSource="dataSource" :canvasWidth="canvasWidth" :canvasHeight="canvasHeight"></MyCharts><MyCharts :dataSource="dataSource2" :canvasWidth="canvasWidth" :canvasHeight="canvasHeight"></MyCharts></div>
</template>
<script setup>
import { ref, reactive } from 'vue'
import MyCharts from '../../components/echarts/MyCharts.vue'    // 引入封裝的圖表組件
import { useSelfAdaption } from '../../hooks/useSelfAdaption'const dataSource = reactive({title: {text: '周銷售總額'},tooltip: {},xAxis: {data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']},yAxis: {},series: [{name: '小米',type: 'bar',data: [60, 45, 52, 38, 49, 55, 66]}]
})
const dataSource2 = reactive({title: {text: '數據都想躺平'},tooltip: {},xAxis: {data: ['夢想', '咸魚', '躺平', '雞湯', '努力', '暴富']},yAxis: {},series: [{name: 'vivo',type: 'line',data: [50, 80, 66, 70, 69, 71]}]
})
const canvasWidth = ref('400px')
const canvasHeight = ref('200px')// 自適應 - 縮放
const { scale } = useSelfAdaption()</script>
<style lang="less" scoped>
.title{text-align: center;
}
</style>

3、效果:

4、這里我還引入了前面封裝好的自適應大屏的useSelfAdaption的hooks方法?:

import { useSelfAdaption } from '../../hooks/useSelfAdaption'// 自適應 - 縮放
const { scale } = useSelfAdaption()

使用:?:style="{ transform: `scale(${scale})` }"

<template><div :style="{ transform: `scale(${scale})` }"><div class="title">封裝echarts圖表</div>

這樣你就成功封裝好了一個echarts圖表組件并成功使用啦!

擴展:

? ? ? ? 性能優化:

在數據可視化大屏中,圖表的性能尤為重要。我們可以通過以下方式進行優化:

合理使用debounce來減少窗口大小變化時的resize事件觸發頻率。
使用canvas渲染模式,相比于svg,canvas在大數據量下有更好的性能表現。
利用ECharts的showLoading和hideLoading方法,在數據加載時顯示加載動畫,避免用戶看到空白的圖表。

????????交互優化:

為了提升用戶體驗,我們可以增加一些交互功能:

提供縮放控制,允許用戶通過鼠標滾輪或者按鈕來縮放圖表。
實現圖表的導出功能,允許用戶將當前的圖表保存為圖片或者PDF文件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22023.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22023.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22023.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

x264 參考幀管理原理:i_poc 變量

POC H.264中的POC(Picture Order Count)用于表示解碼幀的顯示順序。當視頻碼流中存在B幀時,解碼順序和顯示順序可能不一致,因此需要根據POC來重新排列視頻幀的顯示順序,以避免跳幀或畫面不連貫的問題。 具體來說,POC的作用包括: 重排顯示順序:POC確保即使在存在B幀的情…

基于javacv ffmpeg 使用原生ffmpeg命令

基于javacv ffmpeg 使用原生ffmpeg命令 1. ffmpeg2. ffprobe 相關閱讀&#xff1a; javacv ffmpeg使用筆記 測試過程中&#xff0c;發現ffmpeg-6.0-1.5.9-linux-x86_64.jar 存在問題&#xff08;ffmpeg原生命令執行失敗&#xff09;&#xff0c;降級到ffmpeg-5.1.2-1.5.8-linux…

RPG Maker MV 踩坑十一 精靈及背景繪制問題

精靈繪制問題 RPG Maker MV戰斗問題入場飛身戰斗背景繪制精靈集及精靈 RPG Maker MV戰斗問題 在RMMV中戰斗是在場景中調用戰斗管理器&#xff0c;通過管理器去操作角色對象行動及精靈的繪制的。 入場飛身 在其中就發現一個問題加載圖片進場時&#xff0c;會偏高&#xff0c;…

Python編程學習第一篇——Python零基礎快速入門(五)—元組(Tuple)操作

Python元組是一種不可變的有序集合&#xff0c;可以存儲多個不同類型的數據。元組使用小括號來表示&#xff0c;其中的元素用逗號分隔開。與列表不同&#xff0c;元組的元素不能被修改、刪除或添加。它的一些常規操作包括元組的創建、訪問、添加、修改、刪除、運算等等&#xf…

電力電子功率模塊在工程應用中測溫NTC的使用

電力電子功率模塊在工程應用中測溫NTC的使用 1.概述2.什么是NTC3.模塊內部NTC3.1 絕緣隔離措施3.2 NTC熱量考慮 4.使用模擬方法測量NTC溫度4.1 分壓電阻大小 5.使用數字方法測量NTC溫度 1.概述 最近做項目的時候突然被問到一個問題。做實驗測溫用的NTC到底怎么用&#xff1f;為…

【Python】超時請求或計算的處理

超時機制 一般應用于處理阻塞問題 場景&#xff1a; 復雜度較大的計算&#xff08;解析&#xff09;某個數值、加解密計算等請求中遇到阻塞&#xff0c;避免長時間等待網絡波動&#xff0c;避免長時間請求&#xff0c;浪費時間 1. requests 請求超時機制 reqeusts 依賴中的…

[大師C語言(第十九篇)]C語言函數式編程技術詳解

引言 函數式編程&#xff08;Functional Programming&#xff0c;FP&#xff09;是一種編程范式&#xff0c;強調通過使用純函數和不可變數據來編寫代碼。這種范式具有許多優點&#xff0c;如易于測試、可維護性高、并發友好等。盡管C語言被認為是一種過程式編程語言&#xff…

JAVA設計模式-策略模式及在Springboot2.X中寫法

JAVA設計模式-策略模式及在Springboot2.X中寫法 一、經典的策略模式寫法二、Springboot2.X中策略模式寫法 策略模式的定義&#xff1a;策略模式是一種行為型設計模式,定義了一系列算法,并將每個算法封裝起來,使它們可以互相替換 策略模式&#xff1a;在策略模式&#xff08;Str…

算法 java 排序和查找

排序和查找 冒泡排序&#xff08;穩定&#xff09;選擇排序&#xff08;不穩定&#xff09;插入排序&#xff08;穩定&#xff09;希爾排序&#xff08;不穩定&#xff09;歸并排序&#xff08;穩定&#xff09;快速排序&#xff08;不穩定&#xff09;堆排序計數排序桶排序基數…

YOLOv8+PyQt5海洋船只檢測(可以重新訓練,yolov8模型,從圖像、視頻和攝像頭三種路徑識別檢測)

1.效果視頻&#xff1a;海洋船只檢測yoloV8檢測&#xff08;https://mbd.pub/o/bread/mbd-ZpaYk55r&#xff09;_嗶哩嗶哩_bilibili資源包含可視化的海洋船只檢測系統&#xff0c;可對于高空拍攝到的海洋圖片進行輪船檢測&#xff0c;基于最新的YOLOv8訓練的海洋船只檢測模型&a…

多線程知識-11

Runnable 和 Thread 用哪個好 使用Runnable接口的好處是&#xff1a; 避免了單繼承的限制&#xff1a;當你的類已經繼承了另一個類時&#xff0c;你仍然可以實現Runnable接口來創建線程。提高代碼的復用性&#xff1a;你可以將Runnable對象傳遞給多個線程來執行&#xff0c;從…

C++設計模式-策略模式,AI角色動態選擇行為

運行在VS2022&#xff0c;x86&#xff0c;Debug下。 27. 策略模式 策略模式讓算法的選擇與使用獨立開來&#xff0c;使得代碼更靈活、可擴展和易維護。應用&#xff1a;如在游戲開發中&#xff0c;AI角色需要根據環境和條件做出不同的行為&#xff0c;如尋路、攻擊、躲避等。可…

深度解析CSS中為什么會有Stacking Context的概念

CSS中的堆疊上下文&#xff08;Stacking Context&#xff09;概念是為了管理和控制網頁元素的重疊順序而引入的。堆疊上下文的引入解決了以下幾個關鍵問題&#xff1a; 層次管理&#xff1a; 在網頁中&#xff0c;多個元素可能會相互重疊&#xff0c;堆疊上下文定義了這些元素的…

01-CompressionWebpackPlugin---提高 Web 應用性能的利器

CompressionWebpackPlugin—提高 Web 應用性能的利器 筆記分享 在現代 Web 開發中&#xff0c;優化資源加載速度是提升用戶體驗的重要環節。減少文件大小可以顯著提升網頁加載速度&#xff0c;從而改善用戶體驗。CompressionWebpackPlugin 是一個強大的 Webpack 插件&#xff…

【安裝筆記-20240529-Windows-Electerm 終端工具】

安裝筆記-系列文章目錄 安裝筆記-20240529-Windows-Electerm 終端工具 文章目錄 安裝筆記-系列文章目錄安裝筆記-20240529-Windows-Electerm 終端工具 前言一、軟件介紹名稱&#xff1a;Wireshark主頁官方介紹功能特性 二、安裝步驟測試版本&#xff1a;electerm-1.39.35-win-…

【藍橋杯】常見的數據結構

&#x1f338;個人主頁&#xff1a;Yang-ai-cao &#x1f4d5;系列專欄&#xff1a;藍橋杯 C語言 &#x1f34d;博學而日參省乎己&#xff0c;知明而行無過矣 目錄 &#x1f338;個人主頁&#xff1a;Yang-ai-cao &#x1f4d5;系列專欄&#xff1a;藍橋杯 C語言 &…

Spring項目中Ordered接口的應用:全局過濾器(GlobalFilter)的順序控制

在Spring框架&#xff0c;尤其是Spring Cloud Gateway或Spring WebFlux項目中&#xff0c;Ordered接口扮演著重要的角色&#xff0c;特別是在實現全局過濾器(GlobalFilter)時&#xff0c;用于控制過濾器執行的優先級。下面將介紹如何在Spring項目中使用Ordered接口來管理Global…

【AIoT-Robot】3d hand pose

手語是聾啞人士的主要溝通工具,它是利用手部和身體的動作來傳達意義。雖然手語幫助它的使用者之間互相溝通,但聾啞人士與一般人的溝通卻十分困難,這個溝通障礙是源于大部分人不懂得手語。 1. 手勢&&手語 手勢:手的姿勢 ,通常稱作手勢。它指的是人在運用手臂時,所…

初識springcloud

springcloud eureka eureka的作用 消費者該如何獲取服務提供者具體信息&#xff1f; 服務提供者啟動時向eureka注冊自己的信息,eureka保存這些信息消費者,根據服務名稱向eureka拉取提供者信息 如果有多個服務提供者&#xff0c;消費者該如何選擇&#xff1f; 服務消費者利…

創建模塊

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;自定義模塊有兩個作用&#xff1a;一個是規范代碼&#xff0c;讓代碼更易于閱讀&#xff0c;另一個是方便其他程序使用已經編…