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

  • 微信运营:朋友圈营销文案技巧(微信号朋友圈运营)

    微信运营:朋友圈营销文案技巧(微信号朋友圈运营)

  • 提高博客的权重颇费“一番心思”(提高网络可见度是实现博客营销的基本途径)

    提高博客的权重颇费“一番心思”(提高网络可见度是实现博客营销的基本途径)

  • facetime如何纯语音通话(facetime可以纯语音吗)

    facetime如何纯语音通话(facetime可以纯语音吗)

  • 本地删除照片icloud会删除吗(本地删除照片icloud怎么保存)

    本地删除照片icloud会删除吗(本地删除照片icloud怎么保存)

  • 扫描全能王怎么取消自动续费(扫描全能王怎么使用)

    扫描全能王怎么取消自动续费(扫描全能王怎么使用)

  • 手机qq和平板qq怎么同时在线(手机qq和平板qq怎么互传文件)

    手机qq和平板qq怎么同时在线(手机qq和平板qq怎么互传文件)

  • 一加8和华为mate30对比(一加8和华为p30pro)

    一加8和华为mate30对比(一加8和华为p30pro)

  • 简单描述计算机系统的构成(简单描述计算机的工作原理)

    简单描述计算机系统的构成(简单描述计算机的工作原理)

  • 华为mate30pro输入法怎么设置(华为mate30pro输入法设置)

    华为mate30pro输入法怎么设置(华为mate30pro输入法设置)

  • 手机微信背景色变成黑色了怎么办(手机微信背景颜色)

    手机微信背景色变成黑色了怎么办(手机微信背景颜色)

  • 美团如何异地下单(美团外卖怎样异地下单)

    美团如何异地下单(美团外卖怎样异地下单)

  • 通路故障或AAA认证失败是什么意思(通路故障或aaa认证 请进入配置向导手动设置)

    通路故障或AAA认证失败是什么意思(通路故障或aaa认证 请进入配置向导手动设置)

  • cazal00是华为啥型号(caz-alio是华为什么型号)

    cazal00是华为啥型号(caz-alio是华为什么型号)

  • 图片旋转怎么设置(图片旋转设置)

    图片旋转怎么设置(图片旋转设置)

  • 打电话为什么总是关机状态(打电话为什么总是自动断?)

    打电话为什么总是关机状态(打电话为什么总是自动断?)

  • 数据网络已暂停下载是什么意思(数据网络已暂停下载怎么办)

    数据网络已暂停下载是什么意思(数据网络已暂停下载怎么办)

  • 鼠标上的键都有哪些(鼠标上那么多键干嘛的)

    鼠标上的键都有哪些(鼠标上那么多键干嘛的)

  • 腾讯会员没到期再买会叠加吗(腾讯会员没到期怎么看不了)

    腾讯会员没到期再买会叠加吗(腾讯会员没到期怎么看不了)

  • ip地址可分为几类

    ip地址可分为几类

  • realmeQ怎么打开省电模式(realmeq2怎么开窗口)

    realmeQ怎么打开省电模式(realmeq2怎么开窗口)

  • 苹果x隐藏相册怎么找出来(苹果x隐藏相册可以设密码吗)

    苹果x隐藏相册怎么找出来(苹果x隐藏相册可以设密码吗)

  • 苹果x总自动断开wifi(苹果x自己断wifi怎么回事)

    苹果x总自动断开wifi(苹果x自己断wifi怎么回事)

  • oppor15x上市时间(oppor15x发售时间)

    oppor15x上市时间(oppor15x发售时间)

  • 印花税的计税方法
  • 税率中的速算扣除数是什么
  • 车辆购置税和车船税的区别在哪
  • 工程施工的材料购进计入哪里
  • 定额扣除个税什么意思
  • 股东借钱给公司,公司经营不善倒闭!借款公司要还不
  • 企业出售不动产的涉税问题
  • 小规模纳税人未开票收入填在哪里
  • 财务会计制度备案表
  • 业务招待费税前扣除比例
  • 商业折扣的纳税影响
  • 汇票的票据行为有贴现吗
  • 法人费用报销怎么报销
  • 发生成本支出发票未到
  • 返利抵扣货款
  • 简并增值税税率政策解读
  • 960011094开票提示
  • 转让无形资产所有权计入什么科目
  • 小规模纳税人自来水税率
  • 折价股权转让账务处理
  • 母公司如何将子公司转让
  • 我的初级备考经历作文
  • 软件行业的收入怎么样
  • 建账时选择什么会计制度
  • 补交上一年度的所得税怎么做账
  • win11安装失败无法开机
  • 本月无生产,有折旧怎么办
  • 农业合作社零申报流程
  • 发出商品是在产品吗
  • cpu性能排行榜天梯图快科技
  • linux服务器nfs安装
  • 设备安装用工程造价吗
  • 第三方检测公司有前途吗
  • 事业单位收到拨款怎么办
  • 在建工程进项税可以抵扣吗
  • 单反镜头直径越大是不是就越好
  • php1 zybdjx
  • 出口信用保险补贴算不算政府补助
  • php新版本特性
  • 库存股属于什么会计科目
  • thinkphp框架入门
  • 协会会费怎么使用
  • 怎么检测pvc中含量
  • 现金销售商品的会计分录
  • 培训费发票是否含税
  • 销售部门的固定资产
  • 税务已注销工商如何注销
  • 上月结转余额怎么做会计分录
  • 增值税纳税申报表在哪里查询
  • 在途物资属于会计科目吗
  • 合同终止已开发怎么办
  • 应收票据的分录怎么做
  • 营改增是什么时候开始实行的?
  • 固定资产折旧残值率的最新规定2021
  • 劳动关系从什么时候确立
  • 仓库记录
  • windows7卸载所有软件
  • 使用u盘安装macos
  • windows搭建radius
  • 系统技巧 制作流程
  • windows远程桌面怎么开启
  • windows无法完成配置若要尝试恢复配置
  • WIN7系统电脑对话框跟鼠标走怎样设置
  • win10移动版和win10区别
  • 跑酷游戏cs
  • 3dmconfig.ini有什么用
  • js中sort排序
  • js实现计数
  • JavaScript中的变量名不区分大小写
  • javascript的主要内容
  • js prev()
  • h5实现微信分享
  • 中国纳税大户排行
  • 安徽省低保查询入口官网
  • 税务举报被泄漏怎么办
  • 农业部利剑行动
  • 安徽省国家税务局网上办税平台
  • 双方交换住房可以吗
  • 亳州国税局电话号码
  • 开票系统ukey抄报税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设