位置: 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怎么样)

  • 华为p40pro听筒是否是屏幕振动发声的

    华为p40pro听筒是否是屏幕振动发声的

  • 华为mate30能不能插u盘(华为mate30能不能用120w的充电)

    华为mate30能不能插u盘(华为mate30能不能用120w的充电)

  • 华为手机型号在哪(华为手机型号在哪里查找)

    华为手机型号在哪(华为手机型号在哪里查找)

  • oppo怎么卸载breeno(oppo怎么卸载主题商店)

    oppo怎么卸载breeno(oppo怎么卸载主题商店)

  • JDVIP订单怎么查询(jd我的订购)

    JDVIP订单怎么查询(jd我的订购)

  • 微信连续异常闪退如何修复(微信连续异常闪退无法正常使用)

    微信连续异常闪退如何修复(微信连续异常闪退无法正常使用)

  • 台式电脑自带摄像头吗(台式电脑自带摄像头和麦克风吗)

    台式电脑自带摄像头吗(台式电脑自带摄像头和麦克风吗)

  • 飞利浦电动牙刷一直震动怎么办(飞利浦电动牙刷型号详解)

    飞利浦电动牙刷一直震动怎么办(飞利浦电动牙刷型号详解)

  • 纯文本文件的扩展名是(纯文本文件的扩展名格式为DOC)

    纯文本文件的扩展名是(纯文本文件的扩展名格式为DOC)

  • 电脑打字换下一行是哪个键(电脑打字换下一行按哪个键)

    电脑打字换下一行是哪个键(电脑打字换下一行按哪个键)

  • 手机定位离线怎么回事(手机定位离线怎么恢复)

    手机定位离线怎么回事(手机定位离线怎么恢复)

  • oppo手机怎么解除白名单(oppo手机怎么解除禁黄模式)

    oppo手机怎么解除白名单(oppo手机怎么解除禁黄模式)

  • 苹果手机怎么关掉勿扰模式(苹果手机怎么关机和开机)

    苹果手机怎么关掉勿扰模式(苹果手机怎么关机和开机)

  • 苹果锁屏时间颜色怎么换(苹果锁屏时间颜色变透明怎么改都改不过来)

    苹果锁屏时间颜色怎么换(苹果锁屏时间颜色变透明怎么改都改不过来)

  • 华为账号怎么信任其它手机(华为账号在哪里弄)

    华为账号怎么信任其它手机(华为账号在哪里弄)

  • 手机温度多少正常(手机温度多少属于正常)

    手机温度多少正常(手机温度多少属于正常)

  • 苹果飞行模式打电话提示什么(苹果飞行模式打电话怎么提示)

    苹果飞行模式打电话提示什么(苹果飞行模式打电话怎么提示)

  • 闲鱼拍卖买家能取消吗(闲鱼拍卖买家能退款吗)

    闲鱼拍卖买家能取消吗(闲鱼拍卖买家能退款吗)

  • iphonexr怎么关后台(iphonexr怎样关闭后后运行程序)

    iphonexr怎么关后台(iphonexr怎样关闭后后运行程序)

  • 华为保时捷的隐藏功能(华为保时捷的隐藏功能的隐私空间咋切换)

    华为保时捷的隐藏功能(华为保时捷的隐藏功能的隐私空间咋切换)

  • 冷风机比空调省电吗(冷风机费电还是空调费电)

    冷风机比空调省电吗(冷风机费电还是空调费电)

  • c语言中__cplusplus是什么(C语言中次方怎么表示)

    c语言中__cplusplus是什么(C语言中次方怎么表示)

  • Java——多线程:Lamda表达式(java多线程经典案例)

    Java——多线程:Lamda表达式(java多线程经典案例)

  • 税控盘抵扣税款
  • 委托加工业务的会计处理
  • 什么是银行税贷产品
  • 对公账户的钱都是国有资产吗
  • 公司成立之初做哪些
  • 出差飞机票报销标准
  • 工资扣水电费怎么算
  • 税收优惠抵扣
  • 2021小规模免税
  • 广告制作税目
  • 劳务派遣增值税怎么算
  • 无偿赠送商品要纳企业所得税吗
  • 企业退回企业所得税分录
  • 购买的旧机械设备怎么办
  • 公司属于亏损状态,但是法人个人收入算公司账吗
  • 工程用油计入什么科目
  • 收到第三方利息会计分录
  • 免税销售额和免税额区别
  • 园林设计属于什么
  • 实收资本印花税是一年一交吗
  • 某企业取得产品销售收入
  • 普票和专票的税率分别是多少
  • 沙特将开征增值税和特殊商品消费税
  • 防洪基金怎么做分录
  • 代收代付业务是什么意思
  • 总公司汇总申报怎么弄
  • 四级主任科员是什么级别待遇
  • 转贴现属于什么市场
  • 上月的应付账款怎么记账
  • 诉讼过程中
  • 投入产出法怎么求逆矩阵
  • 银行承兑汇票付款提示期限
  • 房产契税什么时间缴纳
  • 酒店需要的原材料和包装费有哪些
  • fpzs1是什么文件可以删除吗
  • 没有独立显卡没有核显能开机吗
  • 企业一部分房屋出租后怎样缴纳房产税
  • 存货的毁损通过什么科目核算
  • php+oracle
  • t typescript
  • 金蝶利润表主营业务成本公式
  • 微信支付的开发公司
  • 筹建期间发生的收入
  • python操作csv
  • 花生油代加工厂
  • 未达起征点怎么填申报表
  • 借款合同 印花
  • mysql5.5远程连接
  • 股东的投资款怎么收回
  • 盈利能力还有什么能力
  • 内账需要哪些单据
  • 不开票收入要交印花税吗
  • 企业为什么要转移用工风险什么意思
  • 房租费用计入什么现金流量
  • 单位内部食堂怎么举报
  • 存货毁损损失应计入的科目是
  • 盘亏存货可以转回来吗
  • 企业间借款利息涉税处理
  • 减免税款借方有利息吗
  • 长期挂账的其他应付款税务风险
  • 商业承兑汇票和银行承兑汇票的区别
  • 审核记账凭证的心得
  • 工业企业生产什么
  • gnu linux编程指南
  • mac os10.11
  • ubuntu独立显卡黑屏
  • hkcmd是什么进程
  • 如何在linux中添加环境变量
  • win7旗舰版安装教程u盘
  • 滚小球的实验过程和材料
  • opengl图形裁剪
  • nodejs的应用场景和优缺点
  • 黑客需要学哪些
  • node.js在网页制作中的作用
  • shell脚本判断命令是否执行成功
  • python socket sendto
  • unityshader
  • 原生js实现ajax步骤
  • 湖南国税电子税务局网
  • 党员e先锋中的支部云课堂在哪
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设