中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue中echart在子組件中只顯示一次怎么解決

發布時間:2022-11-11 10:08:34 來源:億速云 閱讀:165 作者:iii 欄目:開發技術

今天小編給大家分享一下vue中echart在子組件中只顯示一次怎么解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

問題描述

一次項目開發過程中,需要做一些圖表,用的是百度開源的 echarts。 vue推薦組件化開發,所以就把每個圖表封裝成子組件,然后在需要用到該圖表的父組件中直接使用。

實際開發中,數據肯定都是異步獲取的。所以我們在 mounted 生命周期中獲取數據。由于父組件請求的數據并不是一成不變的,會根據不同的條件請求不同的數據,此時需要圖表進行更新。

代碼示例

在父組件中

// Main.vue
<template>
 <div>
  ...
  <Pie :pieData="fullList"></Pie>
  ...
 </div>
</template>
<script>
 import Pie from 'components/SourcePie'
 export default {
 components: {
 Pie
 },
 data(){
  return {
  fullList:{}
 }
 },
 mounted() {
 this._fullQuantity()
 },
 methods: {
 _fullQuantity(){
  // axios...
 }
 }
 }
</script>

在父組件中,通過api接口獲得的數據傳遞給子組件。那么我們在子組件中:

// SourcePie.vue
<template>
 <div  id="data_source_con" v-if="pieData"></div>
</template>
<script>
import echarts from 'echarts';
export default {
 name: 'dataSourcePie',
 data() {
 return {
  //
 };
 },
 props: {
 pieData: Object
 },
 mounted() {
 this.init()
 },
 methods: {
 init() {
  let _this = this;
  this.$nextTick(() => {
  var dataSourcePie = echarts.init(document.getElementById('data_source_con'));
  const option = {
   tooltip: {
   trigger: 'item',
   formatter: "{a} <br/>{b} : {c} (aegqsqibtmh%)",
   position: ['50%', '50%']
   },
   series: [{
   name: '實體統計',
   type: 'pie',
   radius: '50%',
   center: ['50%', '60%'],
   data: [{
    value: _this.pieData.videoNum,
    name: '影視數據'
    },
    {
    value: _this.pieData.albumNum,
    name: '專輯數據'
    },
    {
    value: _this.pieData.songNum,
    name: '歌曲數據'
    },
    {
    value: _this.pieData.novelNum,
    name: '小說數據'
    },
    {
    value: _this.pieData.presonNum,
    name: '人員數據'
    }
   ],
   itemStyle: {
    emphasis: {
    shadowBlur: 10,
    shadowOffsetX: 0,
    shadowColor: 'rgba(0, 0, 0, 0.5)'
    }
   }
   }]
  };
  dataSourcePie.setOption(option);
  window.addEventListener('resize', function() {
   dataSourcePie.resize();
  });
  });
 }
 }
};
</script>

我們發現第一次圖表能正常顯示,但是頁面一刷新或者跳轉到其它頁面,再返回到該頁面,圖表就不顯示了。

原因

自己當時沒有想那么多為什么無法加載,因此在另一個父組件進行應用的時候,他是首屏就加載,數據不變動。

但是當數據變動之后,無法自動的更新圖表。

由于 mounted 只會在掛載的時候執行一次,因此無法后續進行更新

解決辦法

通過 watch 進行圖表的更新

watch: {
 pieData() {
  this.$nextTick(() => {
  if (this.pieData) {
   this.init()
  }
  })
 }
 },

這樣就能解決我們的問題了。

vue是什么

Vue是一套用于構建用戶界面的漸進式JavaScript框架,Vue與其它大型框架的區別是,使用Vue可以自底向上逐層應用,其核心庫只關注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態系統支持的庫開發復雜的單頁應用。

以上就是“vue中echart在子組件中只顯示一次怎么解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泗水县| 彰化县| 洛川县| 揭阳市| 昌吉市| 温宿县| 司法| 新晃| 东兰县| 新余市| 右玉县| 盖州市| 宝清县| 兰州市| 桑植县| 海城市| 盐津县| 古田县| 沙湾县| 福安市| 西乌| 邵东县| 阿拉善右旗| 九寨沟县| 呼图壁县| 兴国县| 潜江市| 巫山县| 廊坊市| 当涂县| 琼海市| 冕宁县| 资兴市| 江山市| 徐州市| 原平市| 万荣县| 阜康市| 那坡县| 乾安县| 长宁县|