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

  • ipad2021是第几代(ipad2021是第几代怎么样)

    ipad2021是第几代(ipad2021是第几代怎么样)

  • vivox70pro+怎么设置返回键(vivox70pro+怎么设置无线充电)

    vivox70pro+怎么设置返回键(vivox70pro+怎么设置无线充电)

  • 抖音怎么点赞不加入喜欢(抖音怎么点赞不了别人的作品)

    抖音怎么点赞不加入喜欢(抖音怎么点赞不了别人的作品)

  • a13几纳米(a13几纳米芯片)

    a13几纳米(a13几纳米芯片)

  • 淘宝刷单降权多久恢复

    淘宝刷单降权多久恢复

  • v2ray是什么东西(v2rayn是什么软件)

    v2ray是什么东西(v2rayn是什么软件)

  • iphone微信暗黑模式怎么关闭(苹果微信暗黑模式)

    iphone微信暗黑模式怎么关闭(苹果微信暗黑模式)

  • u盘能保存数据多久(u盘能保存数据吗)

    u盘能保存数据多久(u盘能保存数据吗)

  • 健康码能注销吗(健康码怎么能注销)

    健康码能注销吗(健康码怎么能注销)

  • 群主可以看到匿名者吗(群主可以看到匿名是谁吗)

    群主可以看到匿名者吗(群主可以看到匿名是谁吗)

  • 抖音直播限流了是怎么回事(抖音直播限流了要多久才能恢复)

    抖音直播限流了是怎么回事(抖音直播限流了要多久才能恢复)

  • 主题单元格样式在哪(主题单元格样式强调文字颜色3)

    主题单元格样式在哪(主题单元格样式强调文字颜色3)

  • 快手怎么刷赞

    快手怎么刷赞

  • 开淘宝店铺怎么注册(开淘宝店铺怎么找货源)

    开淘宝店铺怎么注册(开淘宝店铺怎么找货源)

  • 手机全民k歌怎么连接电视(手机全民k歌怎样连接音响)

    手机全民k歌怎么连接电视(手机全民k歌怎样连接音响)

  • vivos5怎么关闭照片水印(vivox50怎么关闭照片时间)

    vivos5怎么关闭照片水印(vivox50怎么关闭照片时间)

  • 被删除的抖音怎么恢复(抖音被删掉了怎么找回)

    被删除的抖音怎么恢复(抖音被删掉了怎么找回)

  • v8声卡怎么调试喊麦(v8声卡怎么调试声音好听)

    v8声卡怎么调试喊麦(v8声卡怎么调试声音好听)

  • qq消息免打扰对方会知道吗(QQ消息免打扰对方打视频过来会响吗)

    qq消息免打扰对方会知道吗(QQ消息免打扰对方打视频过来会响吗)

  • 萤石云怎么看回放(萤石云怎么看回放录像)

    萤石云怎么看回放(萤石云怎么看回放录像)

  • 手机torrent是怎么打开(手机torrent怎么打开)

    手机torrent是怎么打开(手机torrent怎么打开)

  • wih700怎么连蓝牙(whch700n蓝牙连接)

    wih700怎么连蓝牙(whch700n蓝牙连接)

  • mac系统电脑怎么静音? mac电脑静音的技巧(macbookzen)

    mac系统电脑怎么静音? mac电脑静音的技巧(macbookzen)

  • Win7系统中,如何关闭Windows默认的防火墙?(Win7系统中如何快速查询文件内容)

    Win7系统中,如何关闭Windows默认的防火墙?(Win7系统中如何快速查询文件内容)

  • 电脑学习网给大家免费分享自己常用的三款404页面代码,非常好看且实用!(从网上学电脑下载什么软件)

    电脑学习网给大家免费分享自己常用的三款404页面代码,非常好看且实用!(从网上学电脑下载什么软件)

  • 个体工商户需要进项发票吗
  • 金税盘开票软件服务电话
  • 购销合同需要盖合同章吗
  • 差额冲销
  • 上传附报资料在哪下载
  • 简易征收纳税人取得专用发票
  • 企业借款不能超过资金多少
  • 上月未申报纳税补申报怎么做不会有罚款吗?
  • 药店税票税点
  • 商砼税收政策
  • 风险纳税人怎么查原因
  • 跨年租金收入会计分录
  • 税收征收管理法
  • 哪些票据可以冲销
  • 计提本月银行借款
  • 冲销坏账怎么做分录
  • 清算期间未申报债权
  • 印花税退款分录
  • bios设置的完整说法
  • 控股子公司收购母公司
  • 固定资产折旧方法的选择
  • 如何解决WIN10系统文件夹只读属性不能更改
  • xp系统鼠标右键不能用怎么办
  • 单位卖二手车需交税吗
  • 呆滞品报废入什么科目
  • 圣海伦斯山国家火山纪念区
  • php自学
  • 收益性支出与资本性支出的主要特点
  • windows7使用方法
  • mac安装wine教程
  • 固定资产置换存货的账务处理
  • 聘用退休人员的法律风险
  • laravel注入
  • 公司给员工发放福利会计分录
  • vue开发教程
  • php内存缓存功能怎么用
  • 出口没有增值税发票需要交税吗
  • 周转材料包装箱属于存货分类的
  • 收到证券公司信息
  • 企业所得税计提的准备金可以扣除吗
  • 计提费用收到发票怎么做
  • 2019年无形资产的摊销额为
  • 付国外客户佣金怎么代扣代缴增值税
  • 代扣代缴增值税怎么做账
  • 清理固定资产是什么意思
  • 未使用的固定资产计提折旧应当计入
  • 发工资代付是什么意思
  • 实务操作中如何快速记忆
  • mysql中具体到删某一个数据
  • MySQL为字段添加主键
  • ubuntu磁盘空间突然满了
  • windows自带的几个软件
  • windows不兼容
  • win10系统微软账号退不了怎么办
  • freebsd11.3安装教程
  • .ccc是什么文件
  • windows10mobile官网
  • centos5.10安装
  • linux修改时间格式
  • 远程桌面的文件怎么无法复制到本地桌面
  • ubuntu开发板
  • perform.exe是什么进程
  • windows10预览版是什么
  • windows 10 正式版
  • jquery.ui
  • 问题少年特训学校
  • vue router routes
  • ecmascript6教程
  • jQuery插件开发
  • mongoose怎么用
  • Android UI之FrameLayout(帧布局)
  • android解析xml的方法中,将整个文件加载到内存
  • JavaScript中的变量名不区分大小写
  • Android事件处理模型
  • 基于zepto的移动端轻量级日期插件--date_picker
  • android应用市场有哪些
  • Android之fill_parent和wrap_content
  • 电子税务局网页版登录入口官网
  • 出口退税全流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设