位置: IT常识 - 正文

vue3+Echarts页面加载不渲染显示空白页面的解决(vue-echarts)

编辑:rootadmin
这篇文章主要介绍了vue3+Echarts页面加载不渲染显示空白页面的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录

推荐整理分享vue3+Echarts页面加载不渲染显示空白页面的解决(vue-echarts),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3 echarts,echarts-vue,vue3 echarts,vue3 echarts,vuejs echarts,vue echart图表,vue echarts setoption,vue3 echarts,内容如对您有帮助,希望把文章链接给更多的朋友!

vue3 Echarts页面加载不渲染显示空白页面个人认为造成这个问题的原因解决这个问题的方法vue Echarts白屏或等一会才出现原因解决方法vue3 Echarts页面加载不渲染显示空白页面

在父组件获取到数据后传递给子组件并没有及时的更新渲染图表。

在本地开发环境是没有一点问题,但发布到测试环境上每次页面加载都不渲染,点击浏览器刷新按钮后才会去渲染图表。

个人认为造成这个问题的原因

页面加载子组件dom元素此时还没有加载完成,所以看到的就是空白,只有刷新一下才可以。

解决这个问题的方法vue3+Echarts页面加载不渲染显示空白页面的解决(vue-echarts)

在生命周期里面使用 nextTick()待dom加载完成之后再去渲染图表```

具体实现代码:

父组件:

获取到数据后通过props 传递给子组件

```javascript <!--入驻统计折线图-->  <hostLine ref="settled" :settledData="settledData">   </hostLine>  // 获取入驻统计   async getSettledData() {        const result = await getProjectSettled();        // 如果后台返回的数据是空 前端就渲染一个空表出来 必须等获取到数据以后在渲染 Echarts        if (result.success) {          if (result.data.companyCount.length === 0 && result.data.stationCount.length === 0) {            Object.assign(data.settledData);          } else {            Object.assign(data.settledData, result.data);          }          update.value = new Date().getTime();        }      },

子组件:

接收父组件传递的数据并进行 watch 监听,在生命周期onMounted里面使用 nextTick进行渲染图表就行了。

<template><div class="line-overview"><div class="host-line"><div class="host-line-title">入驻统计</div><div id="hostLine"></div></div></div></template><script lang="ts">import * as echarts from "echarts/core";import { TooltipComponent, LegendComponent, GridComponent, } from 'echarts/components';import { LineChart } from 'echarts/charts';import { CanvasRenderer } from 'echarts/renderers';import { UniversalTransition } from 'echarts/features';import { defineComponent, inject, watch, onMounted, onUnmounted, ref, shallowRef, nextTick } from "vue";echarts.use([TooltipComponent,LegendComponent,GridComponent,LineChart,CanvasRenderer,UniversalTransition]);export default defineComponent({props: ["settledData"],setup(props) {const update = inject("update");const LineChart = shallowRef();const drawChart = () => {const cahrtData = props.settledData;LineChart.value = echarts.init(document.getElementById("hostLine") as HTMLElement);// 指定图表的配置项和数据let option = {tooltip: {trigger: "axis",},legend: {data: ['企业数量', '工位数量',]},grid: {left: "3%",right: "4%",bottom: "3%",containLabel: true,},xAxis: {type: "category",boundaryGap: false,data: cahrtData?.date.reverse()},// Y标尺固定yAxis: {type: "value",scale: true,// // boundaryGap: [0.2, 0.2],// // 动态设置Y轴的刻度值 只取整数min: (value:Record<string,number>) => {return Math.floor(value.min / 100) * 100;},max: (value:Record<string,number>) => {return Math.ceil(value.max / 100) * 100;},},series: [{name: "企业数量",type: "line",stack: "Total",data: cahrtData?.companyCount,},{name: "工位数量",type: "line",stack: "Total",data: cahrtData?.stationCount,},],};// 使用刚指定的配置项和数据显示图表。LineChart.value.setOption(option);window.addEventListener("resize", () => {LineChart.value.resize();});};onMounted(() => {watch([update], () => {nextTick(()=>{drawChart();})}, {deep: true})});onUnmounted(() => {LineChart.value.dispose();});},});</script>vue Echarts白屏或等一会才出现原因

由于是异步加载数据,setOption的时候div的宽高还是0,导致canvas渲染宽高也是0。

解决方法

加上默认的width和height

<div class="echarts-vue" ></div>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

本文链接地址:https://www.jiuchutong.com/zhishi/304056.html 转载请保留说明!

上一篇:如何查看 Python 全部内置变量和内置函数?(如何查看python模块的依赖包)

下一篇:phpcms怎么做手机站(phpcms怎么样)

  • 微信的成功史,这几点值得借鉴!(微信成功之路)

    微信的成功史,这几点值得借鉴!(微信成功之路)

  • 支付宝有挪车服务吗(支付宝挪车服务免费么)

    支付宝有挪车服务吗(支付宝挪车服务免费么)

  • 小米8青春版支持投屏吗(小米8青春版支持OTG功能吗)

    小米8青春版支持投屏吗(小米8青春版支持OTG功能吗)

  • 小红书退货运费自付吗(小红书退货运费在哪里付款)

    小红书退货运费自付吗(小红书退货运费在哪里付款)

  • 抖音视频审核中是什么原因(抖音视频审核中怎么解决)

    抖音视频审核中是什么原因(抖音视频审核中怎么解决)

  • t480和t490区别(t480s和t490s对比)

    t480和t490区别(t480s和t490s对比)

  • 快手加入黑名单后对方显示什么(快手加入黑名单怎么拉出来)

    快手加入黑名单后对方显示什么(快手加入黑名单怎么拉出来)

  • 手机信号显示5g是什么意思(手机信号显示5G小加是不是网络信号不好?)

    手机信号显示5g是什么意思(手机信号显示5G小加是不是网络信号不好?)

  • 微信踢人出群 其他人会收到吗(微信群踢人其他人会收到消息吗)

    微信踢人出群 其他人会收到吗(微信群踢人其他人会收到消息吗)

  • 苹果相册里的视频加载不出来(苹果相册里的视频怎么变慢动作)

    苹果相册里的视频加载不出来(苹果相册里的视频怎么变慢动作)

  • raid模式要开启吗(raid1模式)

    raid模式要开启吗(raid1模式)

  • 腾讯课堂能分屏吗(腾讯课堂能分屏看吗)

    腾讯课堂能分屏吗(腾讯课堂能分屏看吗)

  • 注销了探探对方知道吗(探探如果对方注销,我还能看到聊天记录吗)

    注销了探探对方知道吗(探探如果对方注销,我还能看到聊天记录吗)

  • 互联网接入方式有哪几种(互联网接入方式示意图)

    互联网接入方式有哪几种(互联网接入方式示意图)

  • 华为怎么设置无法接通呢(华为怎么设置无字模式)

    华为怎么设置无法接通呢(华为怎么设置无字模式)

  • 小米投影仪青春版不能手动调屏幕大小吗(小米投影仪青春版2怎么用手机遥控)

    小米投影仪青春版不能手动调屏幕大小吗(小米投影仪青春版2怎么用手机遥控)

  • 畅享10plus人脸识别在哪(畅享10plus人脸识别)

    畅享10plus人脸识别在哪(畅享10plus人脸识别)

  • wps表格删除多余格子(wps表格删除多余的空白页面)

    wps表格删除多余格子(wps表格删除多余的空白页面)

  • 怎么找qq浏览器的收藏(怎么找qq浏览器关注的视频)

    怎么找qq浏览器的收藏(怎么找qq浏览器关注的视频)

  • 华为mate20怎样调大音量(华为mate20怎么自动调节亮度)

    华为mate20怎样调大音量(华为mate20怎么自动调节亮度)

  • 在系统内存中设置磁盘缓冲区的主要目的是(系统内存中设置磁盘缓存的目的)

    在系统内存中设置磁盘缓冲区的主要目的是(系统内存中设置磁盘缓存的目的)

  • 抖音怎么一键删除作品(抖音怎么一键删除收藏的视频)

    抖音怎么一键删除作品(抖音怎么一键删除收藏的视频)

  • iphonex有没有3dtouch

    iphonex有没有3dtouch

  • 华为电脑指纹传感器在哪(华为电脑指纹传感器在哪里设置)

    华为电脑指纹传感器在哪(华为电脑指纹传感器在哪里设置)

  • 一加7pro是什么牌子(一加7Pro是什么手机)

    一加7pro是什么牌子(一加7Pro是什么手机)

  • 智慧视觉是什么(智慧视觉)

    智慧视觉是什么(智慧视觉)

  • 增值税税负率是含税还是不含税
  • 贷款其他消费是指什么
  • 自产产品用于职工福利会计处理
  • 装卸搬运的设备有哪些类型
  • 企业轿车报废
  • 个税为负数如何申报
  • 房地产涉及的税种和税率
  • 报税盘金税盘领的发票能通用吗
  • 广告制作赚钱吗?
  • 抵债资产计提折旧怎么算
  • 运费开进发票
  • 双倍余额递减法考虑净残值吗
  • 小规模纳税人每月15万免税
  • 企业试生产期间发生的费用怎么入账
  • 开旅游公司有补贴吗
  • 超市预付卡开票内容
  • 企业恢复生产经营方案
  • 公司支付媒体广告费用必须签订合同吗?如果没有签订合同是否不能税前扣除?
  • 车间改造用的材料有哪些
  • 购买方已抵扣开具红字信息表销售方怎么处理
  • 公司为职工缴纳的医保不计入账户吗
  • 房产税怎么做账
  • 退回的发票怎么处理
  • 汇算清缴是什么时间
  • 猫光纤信号灯闪红
  • 弥补亏损的会计分录是怎样的
  • 荣耀x10的鸿蒙系统怎么开启
  • 2020 php 薪资
  • 发票差额怎样做分录
  • KunlunPlatform.exe是什么进程?KunlunPlatform.exe是安全的程序吗?
  • window10与CentOS双系统安装详细教程
  • win10 热键
  • 职工薪酬可能计入什么科目
  • 公司报销之后钱发到哪
  • 稿酬所得计入什么科目
  • php中关键字修饰属性是什么
  • php 错误提示
  • 无票收入需要开票吗
  • gps定位器怎么开启
  • web 前端
  • .size()
  • 车辆处置收入入什么科目
  • 帝国cms怎么上传图片
  • 营业外支出的会计科目
  • 外包食堂可以开专票吗
  • spring 门面模式
  • 织梦是什么框架开发的
  • 公司活动赠送小礼品
  • sqlserver怎么把数据库导出来
  • sql server数据库怎么使用
  • 关税完税价格计算增值税
  • sql查询语句大全实例教程
  • 毛利差怎么计算公式
  • 公司对外投资企业与行政许可的区别是什么
  • 销售净利率的范围
  • 财付通入帐中
  • 还没有开业的公司怎么样
  • sql server分页查询sql语句
  • windows虚拟内存转移有什么危害
  • win8系统如何激活
  • linux系统的组成及其作用
  • mac系统不能升级怎么办
  • win7创建密码后为什么还是没有密码
  • 苹果Mac系统怎么切换输入法
  • scards32.exe - scards32是什么进程 有什么用
  • linux网络设备有哪些
  • win10系统中怎么重新启动netframework
  • c#使用mongodb
  • 猫的猫的视频
  • opengl 透视投影
  • js如何显示日期和时间
  • jquery获取button的value值
  • android基础入门教程
  • js script跨域
  • 监听页面滚动事件
  • 深圳地方税务局电话
  • 芜湖办税服务厅
  • 税控盘离线开票时间超限是怎么回事
  • 我们如何理解税收意义
  • 关于农村养殖和环保规定解资料
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设