最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue3?echarts組件化及使用hook進(jìn)行resize方式

 更新時(shí)間:2023年04月20日 09:11:32   作者:瞎跑的uice  
這篇文章主要介紹了Vue3?echarts組件化及使用hook進(jìn)行resize方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

echarts組件化及使用hook進(jìn)行resize

hook 本質(zhì)是一個(gè)函數(shù),把setup函數(shù)中使用的 Composition API 進(jìn)行了封裝

組件化echarts實(shí)例

<template>
  <div ref="echart" :style="{ height: height, width: width }"></div>
</template>

<script setup>
import * as echarts from "echarts";
import useResize from "@/hooks/useResize"; // hook 代碼見下方

const { proxy } = getCurrentInstance(); // 獲取實(shí)例中的proxy

let echart;
let echartInstance;

const props = defineProps({
  // 數(shù)據(jù)
  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: " : {c} (wppm3vysvbp%)",
    },
    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根節(jié)點(diǎn)
  echartInstance = echarts.init(echart, "macarons"); // 初始化 echart
  echartInstance.setOption(option.value, true); // 繪制
  // notMerge 可選。是否不跟之前設(shè)置的 option 進(jìn)行合并。默認(rèn)為 false。即表示合并。合并的規(guī)則,詳見 組件合并模式。如果為 true,表示所有組件都會(huì)被刪除,然后根據(jù)新 option 創(chuàng)建所有新組件。
  // setOption 見 https://echarts.apache.org/zh/api.html#echartsInstance.setOption
});

function resize() {
  echartInstance.resize();
}

// 暴露函數(shù) (供hook調(diào)用)
defineExpose({
  resize,
});

useResize();
</script>

hook (useResize)

export default function () {
    let proxy

    onMounted(() => {
        proxy = getCurrentInstance(); // 獲取實(shí)例中的proxy
        window.addEventListener('resize', resize)
    })

    onBeforeUnmount(() => {
        window.removeEventListener('resize', resize)
    })

    function resize() {
        proxy.exposed.resize()
    }
}

使用echarts和echarts自適應(yīng)

首先安裝echarts,這個(gè)就不介紹了,直接說(shuō)怎么使用.

<!-- 創(chuàng)建一個(gè)div去顯示echarts -->
<div ref="main" style="height: 300px"></div>
import {ref, provide, inject, onMounted, reactive} from "vue";
import * as echarts from "echarts";
const main = ref() // 使用ref創(chuàng)建虛擬DOM引用,使用時(shí)用main.value
onMounted(
    () => {
        init()
    }
)
function init() {
    // 基于準(zhǔn)備好的dom,初始化echarts實(shí)例
    var myChart = echarts.init(main.value);
    // 指定圖表的配置項(xiàng)和數(shù)據(jù)
    var option = {
        /*title: {
            text: 'ECharts 入門示例'
        },*/
        tooltip: {},
        // color:['#779ffe','#a07dfe','#fc9b2e','#63f949','#fb6464','#fce481'],
        /*grid: {
            left: '30%',
            right: '4%',
            bottom: '3%',
            containLabel: true
        },*/
        legend: {
            // data: ['國(guó)家類型','非國(guó)家類型','個(gè)人','法人','可公式','非公式']
        },
        xAxis: {
            type: 'category',
            data: ['國(guó)家類型','非國(guó)家類型','個(gè)人','法人','可公式','非公式']
        },
        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'
            }
        ]
    };
    // 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。
    myChart.setOption(option);
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3 Vite 進(jìn)階rollup命令行使用詳解

    vue3 Vite 進(jìn)階rollup命令行使用詳解

    這篇文章主要介紹了vue3 Vite 進(jìn)階rollup命令行使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue3中toRef、toRefs和toRaw的使用

    vue3中toRef、toRefs和toRaw的使用

    本文主要介紹了vue3中toRef、toRefs和toRaw的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • vue3+js+elementPlus使用富文本編輯器@vueup/vue-quill詳細(xì)教程

    vue3+js+elementPlus使用富文本編輯器@vueup/vue-quill詳細(xì)教程

    富文本編輯器在任何項(xiàng)目中都會(huì)用到,下面這篇文章主要給大家介紹了關(guān)于vue3+js+elementPlus使用富文本編輯器@vueup/vue-quill的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 深入理解vue中的?slot-scope=“scope“

    深入理解vue中的?slot-scope=“scope“

    這篇文章主要介紹了理解vue中的?slot-scope=“scope“,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue3的組合式API中使用ref()函數(shù)的例子

    Vue3的組合式API中使用ref()函數(shù)的例子

    你們是否聽說(shuō)過(guò)Vue3的組合式API?它可是Vue3的新玩法,把以前的Vue2組件函數(shù)轉(zhuǎn)化為了函數(shù)組件。好了,今天我要和大家分享的是如何在組合式API中使用ref()函數(shù),感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • vue2中watch的用法(通俗易懂,簡(jiǎn)單明了)

    vue2中watch的用法(通俗易懂,簡(jiǎn)單明了)

    這篇文章主要給大家介紹了關(guān)于vue2中watch用法的相關(guān)資料,通過(guò)watch監(jiān)聽器,我們可以實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)的變化,并且在數(shù)據(jù)發(fā)生改變時(shí)進(jìn)行相應(yīng)的操作,需要的朋友可以參考下
    2023-09-09
  • vue不通過(guò)路由直接獲取url中參數(shù)的方法示例

    vue不通過(guò)路由直接獲取url中參數(shù)的方法示例

    通過(guò)url傳遞參數(shù)是我們?cè)陂_發(fā)中經(jīng)常用到的一種傳參方法,但通過(guò)url傳遞后改如果獲取呢?下面這篇文章主要給大家介紹了關(guān)于vue如何不通過(guò)路由直接獲取url中參數(shù)的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • vue項(xiàng)目如何去掉URL中#符號(hào)的方法

    vue項(xiàng)目如何去掉URL中#符號(hào)的方法

    在開發(fā)過(guò)程中發(fā)現(xiàn)路徑中帶有/#/的標(biāo)示,而且還去不掉,很丑陋,下面這篇文章主要給大家介紹了vue項(xiàng)目如何去掉URL中#符號(hào)的相關(guān)資料,文中通過(guò)實(shí)例代碼的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Vue自定義指令的使用詳細(xì)介紹

    Vue自定義指令的使用詳細(xì)介紹

    我們看到的v-開頭的行內(nèi)屬性,都是指令,不同的指令可以完成或?qū)崿F(xiàn)不同的功能,對(duì)普通 DOM元素進(jìn)行底層操作,這時(shí)候就會(huì)用到自定義指令。除了核心功能默認(rèn)內(nèi)置的指令 (v-model 和 v-show),Vue 也允許注冊(cè)自定義指令
    2022-09-09
  • Vue項(xiàng)目報(bào)錯(cuò):Uncaught?SyntaxError:?Unexpected?token?'<'的解決方法

    Vue項(xiàng)目報(bào)錯(cuò):Uncaught?SyntaxError:?Unexpected?token?'<&a

    最近在做vue項(xiàng)目時(shí),需要引入一個(gè)第三方的js文件,在index.html中通過(guò)以下方式引入JS文件編譯后就報(bào)了這個(gè)問(wèn)題,這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目報(bào)錯(cuò):Uncaught?SyntaxError:?Unexpected?token?'<'的解決方法,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

金华市| 讷河市| 巨野县| 宁安市| 黄石市| 洮南市| 进贤县| 双城市| 南投市| 通城县| 明溪县| 化德县| 平武县| 长治县| 荆门市| 巴马| 七台河市| 平山县| 虹口区| 开江县| 青海省| 本溪| 阳曲县| 图们市| 博罗县| 铜陵市| 鲁甸县| 潜江市| 漯河市| 岳池县| 伊川县| 和平县| 敖汉旗| 邢台市| 长寿区| 长垣县| 麻江县| 衡阳市| 余庆县| 牙克石市| 巴彦县|