真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么正確封裝ECharts

這篇文章主要介紹“怎么正確封裝ECharts”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么正確封裝ECharts”文章能幫助大家解決問題。

創(chuàng)新互聯(lián)公司客戶idc服務(wù)中心,提供IDC機房托管、成都服務(wù)器、成都主機托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價的產(chǎn)品以及開放、透明、穩(wěn)定、高性價比的服務(wù),資深網(wǎng)絡(luò)工程師在機房提供7*24小時標(biāo)準級技術(shù)保障。

本文涉及 : TypeScript、Vue3、 echarts

因為 ECharts 的使用場景及其廣闊,并且定制化的場景比較多,所以就不封裝可以復(fù)用的組件了,在我看來每個組件還是需要一個獨立的 option ,這里僅封裝更好使用的 echats

目錄

|--src
    |--components     // 組件
        |--echarts    // echats 封裝目錄
            |--echarts-types.ts    // 一些類型
            |--library.ts          // 為 echats 增加的一些功能
            |--useECharts.ts       // 主函數(shù)
        
        |--EChartsComponents
            |--a-echarts.vue      // 組件使用
    
|--App.vue

代碼

library.ts

library.ts 中集中引入,掛載 echarts 需要用到的組件和功能

import * as echarts from 'echarts/core';

import {
        BarChart,
        LineChart,
        PieChart,
        MapChart,
        PictorialBarChart,
        RadarChart,
        ScatterChart
} from 'echarts/charts';

import {
        TitleComponent,
        TooltipComponent,
        GridComponent,
        PolarComponent,
        AriaComponent,
        ParallelComponent,
        LegendComponent,
        RadarComponent,
        ToolboxComponent,
        DataZoomComponent,
        VisualMapComponent,
        TimelineComponent,
        CalendarComponent,
        GraphicComponent
} from 'echarts/components';

echarts.use([
        LegendComponent,
        TitleComponent,
        TooltipComponent,
        GridComponent,
        PolarComponent,
        AriaComponent,
        ParallelComponent,
        BarChart,
        LineChart,
        PieChart,
        MapChart,
        RadarChart,
        PictorialBarChart,
        RadarComponent,
        ToolboxComponent,
        DataZoomComponent,
        VisualMapComponent,
        TimelineComponent,
        CalendarComponent,
        GraphicComponent,
        ScatterChart
]);

export default echarts;

echarts-types.ts

一些需要使用的類型,在這里規(guī)范

export enum RenderType {
        SVGRenderer = 'SVGRenderer',
        CanvasRenderer = 'SVGRenderer'
}

export enum ThemeType {
        Light = 'light',
        Default = 'default',
}

useECharts.ts 主要文件

引入需要使用的功能模塊,EChartsOption 類型在使用時容易報紅,這里暫時用 any

import { onMounted, onUnmounted, Ref, unref } from "vue";
import echarts from "./library";
// import type { EChartsOption } from 'echarts'
import { SVGRenderer, CanvasRenderer } from 'echarts/renderers'
import { RenderType, ThemeType } from './echarts-types'

export function useECharts(elparams: Ref | HTMLDivElement, autoUpdateSize: boolean = false, render: RenderType = RenderType.SVGRenderer, theme = ThemeType.Default) {

        // 渲染模式 
        echarts.use(render === RenderType.SVGRenderer ? SVGRenderer : CanvasRenderer)

        // echats實例
        let echartsInstance: echarts.ECharts | null = null

        // 初始化 echats實例
        function initCharts() {

                const el = unref(elparams)

                if (!el) return

                echartsInstance = echarts.init(el, theme)
        }

        // 配置
        function setOption(option: any) {

                showLoading()

                if (!echartsInstance) initCharts()

                if (!echartsInstance) return

                echartsInstance.setOption(option)

                hideLoading()

        }

        // 獲取 echats實例
        function getInstance() {

                if (!echartsInstance) initCharts()

                return echartsInstance
        }

        // 更新大小
        function onResize() {

                echartsInstance?.resize()

        }

        // 監(jiān)聽元素大小變化
        function watchEl() {

                if (animation) unref(elparams).style.transition = 'width 1s, height 1s'

                const resizeObserve = new ResizeObserver(() => onResize())

                resizeObserve.observe(unref(elparams))

        }

        // 顯示加載狀態(tài)
        function showLoading() {

                if (!echartsInstance) initCharts()

                echartsInstance?.showLoading()
        }

        // 隱藏加載狀態(tài)
        function hideLoading() {

                if (!echartsInstance) initCharts()

                echartsInstance?.hideLoading()
        }

        // 生命鉤子——組件掛載完成
        onMounted(() => {

                window.addEventListener('resize', onResize)

                if (autoUpdateSize) watchEl()

        })

        // 生命鉤子——頁面銷毀
        onUnmounted(() => {

                window.removeEventListener('resize', onResize)

        })

        return { setOptions, getInstance }

}

在組件中的使用

a-echarts.vue 使用,我們現(xiàn)在只需要去找一些 option 就可以實現(xiàn)不同的圖表了

這個還不錯的網(wǎng)站,有很多示例 PPChart 我們隨便拿一個來試試吧,

怎么正確封裝ECharts

把配置代碼復(fù)制到下面,就可以看見效果了




import { onMounted, Ref, ref } from "vue";
import echarts from "../echarts/library";

//獲取echarts實例
const MyEcharts = ref(null)

const { setOption, getInstance } = useECharts(MyEcharts as Ref, false, true)

onMounted(() => {
        
        setOption(option);

        const echartsInstance = getInstance()

})

App.vue




import echarts from './components/EchartsComponents/a-echarts.vue'


怎么正確封裝ECharts

關(guān)于“怎么正確封裝ECharts”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。


分享文章:怎么正確封裝ECharts
分享鏈接:http://weahome.cn/article/jjecij.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部