Rumah > hujung hadapan web > View.js > Artikel ini mengajar anda cara membungkus ECharts dengan betul

Artikel ini mengajar anda cara membungkus ECharts dengan betul

藏色散人
Lepaskan: 2023-03-06 15:59:24
ke hadapan
3221 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang ECharts terutamanya tentang cara merangkumkan ECharts. Rakan-rakan yang berminat boleh lihat di bawah.

Permulaan artikel sentiasa sukar, jadi saya tidak akan mengatakan lebih lanjut

Artikel ini melibatkan: TypeScript, Vue3, echarts

Kerana of ECharts Senario penggunaan adalah sangat luas, dan terdapat banyak senario tersuai, jadi kami tidak akan merangkum komponen boleh guna semula Pada pendapat saya, setiap komponen masih memerlukan pilihan bebas Di sini kami hanya merangkumkan echat yang lebih baik untuk digunakan

Direktori

|--src
    |--components     // 组件
        |--echarts    // echats 封装目录
            |--echarts-types.ts    // 一些类型
            |--library.ts          // 为 echats 增加的一些功能
            |--useECharts.ts       // 主函数
        
        |--EChartsComponents
            |--a-echarts.vue      // 组件使用
    
|--App.vue
Salin selepas log masuk

Kod

library.ts

diperkenalkan secara berpusat di library.ts dan dipautkan Komponen dan fungsi yang perlu digunakan untuk memuatkan 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;
Salin selepas log masuk

echarts-types.ts

Sesetengah jenis yang perlu digunakan dinyatakan di sini

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

export enum ThemeType {
        Light = 'light',
        Default = 'default',
}
Salin selepas log masuk

useECharts.ts Fail utama

memperkenalkan modul berfungsi yang perlu digunakan Jenis EChartsOption mudah dilaporkan merah apabila digunakan Di sini, mana-mana

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> | 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()

        }

        // 监听元素大小变化
        function watchEl() {

                if (animation) unref(elparams).style.transition = &#39;width 1s, height 1s&#39;

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

                resizeObserve.observe(unref(elparams))

        }

        // 显示加载状态
        function showLoading() {

                if (!echartsInstance) initCharts()

                echartsInstance?.showLoading()
        }

        // 隐藏加载状态
        function hideLoading() {

                if (!echartsInstance) initCharts()

                echartsInstance?.hideLoading()
        }

        // 生命钩子——组件挂载完成
        onMounted(() => {

                window.addEventListener(&#39;resize&#39;, onResize)

                if (autoUpdateSize) watchEl()

        })

        // 生命钩子——页面销毁
        onUnmounted(() => {

                window.removeEventListener(&#39;resize&#39;, onResize)

        })

        return { setOptions, getInstance }

}
Salin selepas log masuk

digunakan buat sementara waktu komponennya.

a- Menggunakan echarts.vue, kita kini hanya perlu mencari beberapa pilihan untuk melaksanakan carta yang berbeza

Ini adalah tapak web yang cukup bagus dengan banyak contoh PPChart Mari cuba mana-mana satu ,

Artikel ini mengajar anda cara membungkus ECharts dengan betul

Salin kod konfigurasi di bawah dan anda boleh melihat kesannya

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

<script setup>
import { onMounted, Ref, ref } from "vue";
import echarts from "../echarts/library";

//获取echarts实例
const MyEcharts = ref<HTMLDivElement | null>(null)

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

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

        const echartsInstance = getInstance()

})

</script>
Salin selepas log masuk

App.vue

<template>
  <echarts></echarts>
</template>
<script setup>

import echarts from &#39;./components/EchartsComponents/a-echarts.vue&#39;

</script>
<style scoped></style>
Salin selepas log masuk

Artikel ini mengajar anda cara membungkus ECharts dengan betul

Selesai! Jika anda rasa ia membantu, sila tinggalkan like! ! !

Pembelajaran yang disyorkan: "tutorial video vue.js"

Atas ialah kandungan terperinci Artikel ini mengajar anda cara membungkus ECharts dengan betul. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:juejin.im
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan