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

  • 应纳税所得额是利润总额吗
  • 小规模纳税人开专票税率是1%还是3%
  • 应税劳务的主要成本包括
  • 工资个人所得税怎么算
  • 扶贫入股分红能领多久
  • 预付款被退回分录
  • 库存现金账务处理
  • 实收资本可以做借方吗
  • 出口托收业务
  • 视同销售填在申报表哪一栏
  • 发票与入库单明细不一致税务可以吗
  • 普票冲红原票要退回吗
  • 收益性支出应计入产品成本对吗
  • 外购无形资产的相关税费包括增值税吗
  • 营改增后如何纳税
  • 现金支票作废需要签字吗
  • 三栏式明细账适用于哪些账簿
  • 计提固定资产减值准备属于什么支出
  • 农民工的工资是当月工作过月几号发工资政府有没有规定
  • 未达起征点企业怎么处理
  • 劳务报酬所得的收入额
  • 进项税转出余额方向在哪一方
  • 企业的筹建期间
  • 餐饮发票是普票能报销么
  • 支付给董事的董事费怎么征收个人所得税?
  • 需要缴纳消费税的委托加工存货,由受托方
  • 递延所得税资产对应的会计科目
  • 企业控股情况是指
  • 税前扣除税后扣除
  • 宽带连接错误678最简单的解决方法
  • php数组根据值排序
  • php如何解决异常处理
  • thinkphp3.2 layui
  • 已缴增值税的账务处理
  • 污水处理增值税税率
  • 前端 教程
  • 分割sw
  • 纳税人在电子税务局收到优惠政策
  • 六款小巧的HTTP Server[C语言] 贵贵的博客 开发|架构|开源|共享
  • 预收账款怎么变成应收
  • 亏损合同预计负债的会计分录
  • 劳务费合同模版
  • mongodb $sum
  • mysql proxy问题的解决方法
  • 公司法人怎么样才会没有责任
  • 电脑配件入账
  • 公司五金是哪五金
  • 财务软件无形资产有哪些
  • 商贸公司主营业务成本会计分录
  • 增值税普通发票可以抵扣多少钱
  • 参展费会计分录
  • 其他应收款待抵扣税金
  • mssqlserveradhelper
  • sqlserver 附加数据库 只读
  • win8怎么扩展c盘
  • win8系统怎么清理磁盘
  • 微软官方的网址是多少
  • 加载dll错误是什么意思
  • linux中vim命令详解
  • windows7文件夹选项在哪里
  • 进入注册表的快捷键
  • 苹果Mac系统怎么切换输入法
  • 微软警告:64位Win7系统或无法安装KB3033929补丁更新
  • win8怎么改文件格式
  • win10电脑磁盘损坏
  • jquery.ui
  • perl里怎么对数组实现一次遍历
  • jsp手机号验证
  • cpu时钟预取实例是什么
  • 很好的无光照模式叫什么
  • android编译环境搭建
  • python 批量查询
  • unity3d颜色
  • android 引用第三方库
  • 社保在哪里缴费
  • 经营所得专项扣除养老保险费可以全额扣除吗
  • 开健身会所国家有补贴吗
  • 2023年河北居民养老保险缴费时间
  • 煤矸石征收资源税吗
  • 普通发票开具时写材料一批需要附什么清单?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设