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

  • 鸿蒙桌面布局图片怎么设置(鸿蒙桌面布局教程)

    鸿蒙桌面布局图片怎么设置(鸿蒙桌面布局教程)

  • 快手参加的抽奖在哪看(快手参加的抽奖在哪里)

    快手参加的抽奖在哪看(快手参加的抽奖在哪里)

  • 微信图片怎么压缩成文件发送(微信图片怎么压缩到文件夹)

    微信图片怎么压缩成文件发送(微信图片怎么压缩到文件夹)

  • 快手有赞退款关闭了怎么在申请退款(快手有赞订单退款中收到货了怎么办)

    快手有赞退款关闭了怎么在申请退款(快手有赞订单退款中收到货了怎么办)

  • 美团怎么看商家电话号码(美团怎么看商家月销量)

    美团怎么看商家电话号码(美团怎么看商家月销量)

  • 搜狗输入法打字时看不到字怎么办(搜狗输入法打字后面的字会消失)

    搜狗输入法打字时看不到字怎么办(搜狗输入法打字后面的字会消失)

  • 苹果x抖音怎么看好友在不在线(苹果X抖音怎么投屏到电视上)

    苹果x抖音怎么看好友在不在线(苹果X抖音怎么投屏到电视上)

  • 美版是什么意思(苹果手机美版是什么意思)

    美版是什么意思(苹果手机美版是什么意思)

  • 抖音视频加速怎么弄的(抖音视频加速怎么做)

    抖音视频加速怎么弄的(抖音视频加速怎么做)

  • 华为手机怎么变黑白屏了呢(华为手机怎么变黑白了,怎么还原)

    华为手机怎么变黑白屏了呢(华为手机怎么变黑白了,怎么还原)

  • 知乎怎么复制不了文字(知乎怎么复制不了)

    知乎怎么复制不了文字(知乎怎么复制不了)

  • 快手私信删了另一个手机登录能看见吗(快手私信删了另一个账号)

    快手私信删了另一个手机登录能看见吗(快手私信删了另一个账号)

  • 微信群里面的机器人是怎么来的(微信群里面的机器人怎么设置)

    微信群里面的机器人是怎么来的(微信群里面的机器人怎么设置)

  • 抖音怎下载(抖音怎下载 安装 最新版)

    抖音怎下载(抖音怎下载 安装 最新版)

  • 电子计算器的ce是什么键(电子计算器的CE是什么键)

    电子计算器的ce是什么键(电子计算器的CE是什么键)

  • access2010是什么模型(access2010是什么类型数据库)

    access2010是什么模型(access2010是什么类型数据库)

  • dvd可以播放cd吗(dvd可以播放vcd吗)

    dvd可以播放cd吗(dvd可以播放vcd吗)

  • word怎么设置页眉边距(word怎么设置页面纸张大小)

    word怎么设置页眉边距(word怎么设置页面纸张大小)

  • 微信付款密码忘了怎么办(微信怎么设置钱包密码)

    微信付款密码忘了怎么办(微信怎么设置钱包密码)

  • wps怎么变成文本格式(wps怎么改成文本格式)

    wps怎么变成文本格式(wps怎么改成文本格式)

  • 京东怎么删掉自己的评价(删除京东购物)

    京东怎么删掉自己的评价(删除京东购物)

  • vlive怎么设置中文(新版本vlive怎么用)

    vlive怎么设置中文(新版本vlive怎么用)

  • 手机通话音量小怎么办(手机通话音量小,免提正常)

    手机通话音量小怎么办(手机通话音量小,免提正常)

  • 华硕路由器密码(华硕路由器密码重置)

    华硕路由器密码(华硕路由器密码重置)

  • 定期定额征收的个体户怎么报个人所得税
  • 小规模纳税人不开票需要纳税吗
  • 计提环境保护税怎么做分录
  • 广告服务收入要计入什么科目
  • 已经退税的增票怎么做账
  • 税务机关对企业实施特别纳税调整,涉及企业向境外
  • 中小型物流公司简介
  • 收到跨境分红的会计处理怎么做?
  • 不收汇样品的会计分录
  • 印花税票计税依据含税吗?
  • 关于金融行业的经典句子
  • 俱乐部会员有什么用
  • 发票数量能开0.0几吗
  • 金税三期个人所得税扣缴系统网络设置
  • 小规模纳税人能抵扣进项发票吗
  • 营改增贷款服务包括哪些
  • 遗属补助是死亡当月发放还是次月发放
  • 电脑游戏没法玩怎么办
  • 代开专票名称没有填写可以报销吗
  • 什么是租赁公司的主营业务
  • 在卸载程序里找不到软件怎么卸载
  • 捐赠视同销售为什么不确认收入?
  • PHP:apache_getenv()的用法_Apache函数
  • 以前年度损益调整属于哪类科目
  • 以前年度收入如何确认收入
  • 货款退回账务处理方法
  • 酒店原材料内部分析
  • 跨地区经营增值税预缴
  • 静态显示方式
  • svg如何嵌入html5
  • 税控盘用来干嘛的
  • 应收账款坏账准备计算表
  • 旅行社代订的机票可以退吗
  • java事件处理机制三个重要概念
  • 汽车折旧年限是几年内的
  • mongodb官方文档中文
  • 增值税发票跨月红冲操作流程
  • 金蝶迷你版怎么打印明细账
  • 资产减值损失属于什么科目
  • oracle 删除用户下所有表
  • 注册资本金收到之后可以转挂往来款吗
  • 以前年度应收账款错误如何调整
  • 公司购买办公用品会计分录
  • 个税是怎么扣除的?
  • 利息收入的会计分录
  • 外购固定资产的会计处理
  • 其他应收款对应的预算会计
  • 小规模纳税人免税政策
  • 公司注册取消验资
  • 股东实收资本超额到位
  • 报销单填写发票第几页交给财务
  • win10系统如何给d盘加密
  • winxp开机黑屏只有光标
  • windows1021h2更新
  • centos7安装中文包
  • centos新加硬盘
  • win7宽带连接错误813怎么解决办法
  • win10安装的中文包在哪
  • win7电脑无法上网 连接正常
  • 两个linux系统之间如何传文件
  • win7系统谷歌浏览器打不开网页
  • 深入剖析典型案例
  • Android 中的guideline
  • android开发环境是什么
  • 安卓游戏引擎
  • 游戏输入法安卓
  • Unity通过图片生成3D模型
  • js表单事件有哪些
  • jquery基础知识
  • python中字典的方法有哪些
  • node.js的概念
  • django 接收前端的json
  • javascript flash下fromCharCode和charCodeAt方法使用说明
  • 广东地税电话客服电话
  • 广西电子发票如何申请
  • 深圳税务忘记密码
  • 奔驰购置税多少钱
  • 专利转让个人所得税转换为经营所得
  • 未到申报期可以提前抄税吗
  • 融资租赁出租会计账务处理流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设