iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > 其他 >Vue3 echarts组件化及使用hook进行resize的方法是什么
  • 112
分享到

Vue3 echarts组件化及使用hook进行resize的方法是什么

Vue3hookecharts 2023-05-23 13:05:31 112人浏览 独家记忆
摘要

echarts组件化及使用hook进行resizehook 本质是一个函数,把setup函数中使用的 Composition api 进行了封装组件化echarts实例<template> <div ref="

    echarts组件化及使用hook进行resize

    hook 本质是一个函数,把setup函数中使用的 Composition api 进行了封装

    Vue3 echarts组件化及使用hook进行resize的方法是什么

    组件化echarts实例

    <template>
      <div ref="echart" :></div>
    </template>
    
    <script setup>
    import * as echarts from "echarts";
    import useResize from "@/hooks/useResize"; // hook 代码见下方
    
    const { proxy } = getCurrentInstance(); // 获取实例中的proxy
    
    let echart;
    let echartInstance;
    
    const props = defineProps({
      // 数据
      data: {
        type: Array,
        default: [
          { value: 40, name: "rose 1" },
          { value: 38, name: "rose 2" },
          { value: 32, name: "rose 3" },
        ],
      },
      // 高度
      height: {
        type: [Number, String],
        default: "300px",
      },
      // 宽度
      width: {
        type: [Number, String],
        default: "100%",
      },
    });
    
    const { data } = toRefs(props);
    
    const data1 = Reactive({
      option: {
        legend: {
          top: "bottom",
        },
        toolbox: {
          show: false,
          feature: {
            mark: { show: true },
            dataView: { show: true, readOnly: false },
            restore: { show: true },
            saveAsImage: { show: true },
          },
        },
        tooltip: {
          trigger: "item",
          fORMatter: "{b} : {c} ({d}%)",
        },
        series: [
          {
            name: "Nightingale Chart",
            type: "pie",
            radius: [10, 120],
            center: ["50%", "45%"],
            roseType: "area",
            itemStyle: {
              borderRadius: 8,
            },
            data: data.value,
          },
        ],
      },
    });
    
    const { option } = toRefs(data1);
    
    // 观察 data ,重新绘制
    watch(
      data,
      (newValue) => {
        option.value.series[0].data = newValue;
      },
      { deep: true }
    );
    watch(
      option,
      (newValue) => {
        echartInstance.setOption(newValue, true);
      },
      { deep: true }
    );
    
    onMounted(() => {
      echart = proxy.$refs.echart; // 获取的DOM根节点
      echartInstance = echarts.init(echart, "Macarons"); // 初始化 echart
      echartInstance.setOption(option.value, true); // 绘制
      // notMerge 可选。是否不跟之前设置的 option 进行合并。默认为 false。即表示合并。合并的规则,详见 组件合并模式。如果为 true,表示所有组件都会被删除,然后根据新 option 创建所有新组件。
      // setOption 见 https://echarts.apache.org/zh/api.html#echartsInstance.setOption
    });
    
    function resize() {
      echartInstance.resize();
    }
    
    // 暴露函数 (供hook调用)
    defineExpose({
      resize,
    });
    
    useResize();
    </script>

    hook (useResize)

    export default function () {
        let proxy
    
        onMounted(() => {
            proxy = getCurrentInstance(); // 获取实例中的proxy
            window.addEventListener('resize', resize)
        })
    
        onBeforeUnmount(() => {
            window.removeEventListener('resize', resize)
        })
    
        function resize() {
            proxy.exposed.resize()
        }
    }

    使用echarts和echarts自适应

    首先安装echarts,这个就不介绍了,直接说怎么使用.

    <!-- 创建一个div去显示echarts -->
    <div ref="main" ></div>
    import {ref, provide, inject, onMounted, reactive} from "Vue";
    import * as echarts from "echarts";
    const main = ref() // 使用ref创建虚拟DOM引用,使用时用main.value
    onMounted(
        () => {
            init()
        }
    )
    function init() {
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(main.value);
        // 指定图表的配置项和数据
        var option = {
            
            tooltip: {},
            // color:['#779ffe','#a07dfe','#fc9b2e','#63f949','#fb6464','#fce481'],
            
            legend: {
                // data: ['国家类型','非国家类型','个人','法人','可公式','非公式']
            },
            xAxis: {
                type: 'cateGory',
                data: ['国家类型','非国家类型','个人','法人','可公式','非公式']
            },
            yAxis: {
                type: 'value',
                scale: true,
                max: 150,
                min: 0,
                splitNumber: 3,
            },
            series: [
                {
                    data: [
                        {
                            value: 120,
                            itemStyle: {
                                color: '#7fa6fe'
                            }
                        },
                        {
                            value: 90,
                            itemStyle: {
                                color: '#a17fff'
                            }
                        },
                        {
                            value: 40,
                            itemStyle: {
                                color: '#fda630'
                            }
                        },
                        {
                            value: 120,
                            itemStyle: {
                                color: '#93fc73'
                            }
                        },
                        {
                            value: 120,
                            itemStyle: {
                                color: '#fb6666'
                            }
                        },
                        {
                            value: 120,
                            itemStyle: {
                                color: '#fbe068'
                            }
                        }
                    ],
                    type: 'bar'
                }
            ]
        };
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    }

    以上就是vue3 echarts组件化及使用hook进行resize的方法是什么的详细内容,更多请关注编程网其它相关文章!

    --结束END--

    本文标题: Vue3 echarts组件化及使用hook进行resize的方法是什么

    本文链接: https://www.lsjlt.com/news/216955.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Vue3 echarts组件化及使用hook进行resize的方法是什么
      echarts组件化及使用hook进行resizehook 本质是一个函数,把setup函数中使用的 Composition API 进行了封装组件化echarts实例<template> <div ref="...
      99+
      2023-05-23
      Vue3 hook echarts
    • Vue3 echarts组件化及使用hook进行resize方式
      目录echarts组件化及使用hook进行resize组件化echarts实例hook (useResize)使用echarts和echarts自适应总结echarts组件化及使用h...
      99+
      2023-05-16
      Vue3 echarts组件化 使用hook进行resize echarts组件化
    • vue3+ts使用Echarts的方法是什么
      本篇内容主要讲解“vue3+ts使用Echarts的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3+ts使用Echarts的方法是什么”吧!安装npm install...
      99+
      2023-07-05
    • Vue3父子通讯方式及Vue3插槽的使用方法是什么
      这篇文章主要介绍了Vue3父子通讯方式及Vue3插槽的使用方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3父子通讯方式及Vue3插槽的使用方法是什么文章都会有所收获,下面我们一起来看看吧。Vue...
      99+
      2023-07-05
    • vue3自定义插件的作用场景及使用方法是什么
      本篇内容主要讲解“vue3自定义插件的作用场景及使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3自定义插件的作用场景及使用方法是什么”吧!插件的作用场景在vue2的插件那篇文...
      99+
      2023-07-05
    • vue3和ts封装axios及使用mock.js的方法是什么
      这篇文章主要讲解了“vue3和ts封装axios及使用mock.js的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue3和ts封装axios及使用mock.js的方法是什么”吧...
      99+
      2023-07-05
    • Python元组的定义及使用方法是什么
      本篇内容主要讲解“Python元组的定义及使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python元组的定义及使用方法是什么”吧!1、前言在Python中元组是一个和列表非常类似...
      99+
      2023-06-25
    • joomla组件开发使用的方法是什么
      Joomla组件开发使用的方法有以下几步骤: 创建组件文件夹:首先,在Joomla的组件目录中创建一个文件夹,用于存放组件相关的...
      99+
      2023-10-22
      joomla
    • Vue3通过ref操作Dom元素及hooks的使用方法是什么
      这篇文章主要介绍了Vue3通过ref操作Dom元素及hooks的使用方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3通过ref操作Dom元素及hooks的使用方法是什么文章都会有所收获,下面我们...
      99+
      2023-07-05
    • javascript利用set进行数组去重的方法是什么
      这篇文章主要介绍“javascript利用set进行数组去重的方法是什么”,在日常操作中,相信很多人在javascript利用set进行数组去重的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
      99+
      2022-10-19
    • uni-app组件的基本使用方法是什么
      本文小编为大家详细介绍“uni-app组件的基本使用方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“uni-app组件的基本使用方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.组件概念首先讲...
      99+
      2023-07-05
    • Bootstrap中手风琴组件的使用方法是什么
      这篇文章主要介绍“Bootstrap中手风琴组件的使用方法是什么”,在日常操作中,相信很多人在Bootstrap中手风琴组件的使用方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
      99+
      2022-10-19
    • Bootstrap中警告框组件的使用方法是什么
      本篇内容介绍了“Bootstrap中警告框组件的使用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
      99+
      2022-10-19
    • Python中使用Numpy优化文件处理的方法是什么?
      文件处理是编程中常见的任务之一,而Python中的Numpy库提供了一些优化文件处理的方法。本文将介绍如何使用Numpy库来优化文件处理,并通过演示代码来说明其实现方法。 一、Numpy库简介 Numpy是Python中一个重要的科学计算...
      99+
      2023-06-01
      numpy django 文件
    • Java使用Junit4.jar进行单元测试的方法是什么
      今天就跟大家聊聊有关Java使用Junit4.jar进行单元测试的方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、下载依赖包分别下载 junit.jar 以及 hamcr...
      99+
      2023-06-25
    • WPF中鼠标/键盘/拖拽事件及用行为封装事件的方法是什么
      这篇“WPF中鼠标/键盘/拖拽事件及用行为封装事件的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“WPF中鼠标/键...
      99+
      2023-07-05
    • Go 语言中使用 NumPy 库进行索引的最佳方法是什么?
      NumPy 是 Python 中重要的科学计算库,它提供了强大的数组处理功能,包括索引、切片、聚合等。同时,NumPy 也被广泛用于机器学习、深度学习等领域。Go 语言是一门静态类型、编译型语言,能够提供高效的性能和可靠的类型安全。那么,...
      99+
      2023-09-20
      numy unix 索引
    • 使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么
      这篇文章主要介绍“使用Data Guard Broker进行Data Guard物理备用库配置的方法是什么”,在日常操作中,相信很多人在使用Data Guard Broker进...
      99+
      2022-10-18
    • 在Linux系统中,使用Git进行团队协作的最佳方法是什么?
      Git是一种分布式版本控制系统,可以有效地管理代码的历史版本和协作开发。在Linux系统中,使用Git进行团队协作可以极大地提高开发效率和代码质量。本文将介绍如何在Linux系统中使用Git进行团队协作的最佳方法,并演示一些代码。 创建...
      99+
      2023-10-12
      linux git django
    • LeetCode索引中的重定向问题:使用Go语言进行快速解决的方法是什么?
      LeetCode是一个非常流行的算法题库,它提供了大量的算法题目供程序员们练习和提高自己的算法能力。然而,有时候我们会遇到LeetCode索引中的重定向问题,这个问题会影响我们的学习进程,因此我们需要一种快速解决的方法。在这篇文章中,我们将...
      99+
      2023-09-23
      重定向 leetcode 索引
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作