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

  • 你的努力是为了让你的选择更正确(你的努力是为了有更多的选择)

    你的努力是为了让你的选择更正确(你的努力是为了有更多的选择)

  • bilibili大会员被冻结怎么办

    bilibili大会员被冻结怎么办

  • 华为mate30前置摄像头中间的红点是什么(华为mate30前置摄像)

    华为mate30前置摄像头中间的红点是什么(华为mate30前置摄像)

  • 哔哩哔哩音频怎么下载到手机(哔哩哔哩视频怎么提取)

    哔哩哔哩音频怎么下载到手机(哔哩哔哩视频怎么提取)

  • qq水印怎么去掉(qq里的水印怎么去掉)

    qq水印怎么去掉(qq里的水印怎么去掉)

  • 抖音加载失败什么原因(抖音加载失败怎么办)

    抖音加载失败什么原因(抖音加载失败怎么办)

  • 主码和外码的概念(举例说明什么是主码什么是外码)

    主码和外码的概念(举例说明什么是主码什么是外码)

  • 抖音里超级乐迷是什么(抖音里超级乐迷是真的吗)

    抖音里超级乐迷是什么(抖音里超级乐迷是真的吗)

  • 小米手机永恒模式是啥(小米手机永恒模式是干嘛的)

    小米手机永恒模式是啥(小米手机永恒模式是干嘛的)

  • 微信紧急冻结后别人还能登上吗(微信紧急冻结后要多久可以解冻)

    微信紧急冻结后别人还能登上吗(微信紧急冻结后要多久可以解冻)

  • 微信怎么复制语音发给别人(微信怎么复制语音转发)

    微信怎么复制语音发给别人(微信怎么复制语音转发)

  • 计算机中 媒介是指什么(计算机为媒介的通信)

    计算机中 媒介是指什么(计算机为媒介的通信)

  • 如何解除苹果下载限制(如何解除苹果下载200m限制)

    如何解除苹果下载限制(如何解除苹果下载200m限制)

  • 如何退出相互宝分摊(如何退出相互宝保险)

    如何退出相互宝分摊(如何退出相互宝保险)

  • 华为mate30有5g功能吗(华为 mate30 5g)

    华为mate30有5g功能吗(华为 mate30 5g)

  • 计算器的显示器用来显示什么和什么(计算器的显示器和键盘分别属于)

    计算器的显示器用来显示什么和什么(计算器的显示器和键盘分别属于)

  • iphone11怎么查激活时间(苹果11怎么查看激活)

    iphone11怎么查激活时间(苹果11怎么查看激活)

  • 爱奇艺播放设备超限怎么办(爱奇艺播放设备上限是多少)

    爱奇艺播放设备超限怎么办(爱奇艺播放设备上限是多少)

  • 抖音怎么把图片和视频放在一起(抖音怎么把图片时间延长)

    抖音怎么把图片和视频放在一起(抖音怎么把图片时间延长)

  • Win11如何更改开始菜单和任务栏颜色(win11如何更改开始菜单位置)

    Win11如何更改开始菜单和任务栏颜色(win11如何更改开始菜单位置)

  • annaconda 安装 opencv(cv2)(annaconda安装opencv)

    annaconda 安装 opencv(cv2)(annaconda安装opencv)

  • 【uniapp】 的事件处理详解(uniapp实战)

    【uniapp】 的事件处理详解(uniapp实战)

  • 「Vue面试题」vue项目本地开发完成部署到服务器后报404是什么原因呢?(vue面试题及答案2021)

    「Vue面试题」vue项目本地开发完成部署到服务器后报404是什么原因呢?(vue面试题及答案2021)

  • 你的应用太慢了,给我司带来了巨额损失,该怎么办(应用加载慢)

    你的应用太慢了,给我司带来了巨额损失,该怎么办(应用加载慢)

  • python如何读取不同格式文件(python读取不到文件怎么办)

    python如何读取不同格式文件(python读取不到文件怎么办)

  • 企业在异地设立的办事处撤销了,人员咋办
  • 非征税期抄税如何解决
  • 应交城建税计入哪个科目
  • 所得税是什么意思
  • 购货发票属于什么证据?
  • 费用日记账明细
  • 企业接受外部劳务派遣用工支出税前扣除问题
  • 公司清算 债权
  • 试驾车抵税
  • 工程外出经营流程
  • 随同产品销售单独计价的包装物计入
  • 采购办公用品计入什么科目
  • 小规模纳税人免税会计分录
  • 租赁房产不开租房发票
  • 税务局代增值税专用发票盖什么章
  • 财税[2016]140号文逐条解读
  • 办税员实名认证变更
  • 合并报表怎么抵损益
  • 小规模纳税人残疾人纳税优惠
  • 本期增加固定资产原值
  • 购进货物运费会退吗
  • 消费税的计算公式推导过程
  • 内帐应收应付款坏账年末怎么处理?
  • 发现以前年度未做领料生产的分录怎么处理
  • 简易计税发票如何抵扣
  • 利润表营业成本是负数是什么原因
  • 固定资产不入账是谁的责任
  • 2022年最新cpu天梯图手机
  • php 赋值
  • php image
  • 二手房交易土增税文件
  • 本部借给分公司的钱用交印花税吗
  • php调用外部程序
  • 普通发票的开票规定
  • php访问数据库的方式
  • react devtools
  • 滚动条基本样式有哪些
  • pytorch训练函数
  • 基金管理人应当自与基金销售机构签订销售协议之日起
  • 织梦参数配置设置
  • 公司管理费一般占多少个点
  • 增值税专用发票有几联?
  • 企业税金总额包括什么
  • mysql查询表清单
  • 购买监控器计入什么科目
  • 本期数值与去年同期数值之差称为什么
  • sqlserver2008实例配置
  • mysql日期和时间分开存的 索引
  • 企业清算未分配利润怎么交税
  • 汇算清缴怎么弥补亏损怎么操作
  • 预付款项核销
  • 怎么冲减多计提的工会经费
  • 暂估入库后发票整单折扣
  • 小规模纳税人系统查询
  • 人工安装费是几个点税税率
  • 应付账款怎么入账
  • 现金支票取现怎么记账
  • win8.1怎么改win7系统
  • git服务器默认端口
  • centos如何删除用户组里面的用户
  • windows XP+Fedora 8+solaris 11三系统安装攻略
  • WINDOWS操作系统内置的GUEST
  • windows8远程桌面连接
  • linux连接ssr
  • 怎么配置命令
  • winxp/win7/win2003 电脑开机密码设置图文方法
  • 苹果手机
  • win10如何打开defender
  • win 10系统怎么提高网速
  • mvp功能
  • jquery 引入js
  • python模拟软件
  • js parsefloat parseint 转换函数
  • js setimmediate
  • 乡镇调研报告最佳范文
  • 拉萨税务局拉巴卓玛
  • 白酒消费税加征
  • 怎样以实际行动争取入团
  • 浙江省地方税务局通用定额发票
  • 2020北京户口指标数量
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设