VUE Echarts组件初始加载压缩问题解析

不知不觉,又做成了全栈。。。不过也好,理论+实践,才是最佳学习之道。

今天的问题是,VUE中使用Echarts组件绘制一个柱状图,页面在初始加载的时候被压缩

期望的结果是:


代码都是官方的,为啥就不行了呢?

我的需求是:数据呈现两种结果,一种是table,一种是柱状图,两个div都使用v-show绑定变量isShowCharts进行切换,所以有个按钮可点击切换,在切换至柱状图的时候,传入实参true。

刚开始我的写法是这样:

showCharts(v) {
      this.isShowCharts = v
      this.initEcharts()
    },

结果是,不行!!!

网上大家也都有方案,但尝试后发现依然不好。

后来找专业前端的楠神帮忙调了一下,果然是楠神,几分钟就好了。

楠神给出的代码是:

showCharts(v) {
      this.isShowCharts = v
      this.$nextTick(() => {
        this.initEcharts()
      })
    },



mounted() {
    //this.initEcharts()
  },

去掉了mounted的加载,就这么简单的调整,OK了!

这个问题的因素呢,在于echart组件渲染的时候(mounted中),它比页面dom元素渲染的更早,以至于,它当时并不知道自己应该渲染出多少宽度,这里我给的初始值是宽度100%,为的是监听窗口变化时,以实现响应式布局。如果给固定宽度的话,是没这个问题的,因为它知道自己的宽度了,当然也不能实现响应式。

window.addEventListener('resize', () => {

        myChart.resize()

      })

myChartStyle: {float: 'left', width: '100%', height: '400px'}

这个$nextTick是啥来头呢?官方给的解释是这样的,看的我半知半解

和楠神聊下来,大概就是这个意思:

这么着!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue项目中,使用echarts图表组件时遇到图表重复加载和axis重复多次请求的问题可以通过以下方式解决: 1. 图表重复加载问题:通常是因为在Vue组件的生命周期钩子函数中重复渲染图表组件导致的。可以通过在Vue组件的`mounted`生命周期钩子函数中进行判断,只有在第一次加载组件时才渲染图表。可以使用一个标志位来判断是否已经加载过图表,例如: ```javascript mounted() { if (!this.chartLoaded) { // 进行图表渲染的操作 this.chartLoaded = true; } } ``` 2. axis重复多次请求问题:通常是因为在每次刷新数据时都重新请求了axis的数据导致的。可以通过将axis的数据保存在Vue组件的数据属性中,并在刷新数据时对应更新这些数据,而不是重新请求。例如: ```javascript data() { return { axisData: [], // 保存axis的数据 // 其他数据属性 } }, methods: { fetchData() { // 请求数据的操作 axios.get('axisDataUrl') .then(response => { this.axisData = response.data; // 更新axis的数据 // 其他数据请求和刷新操作 }) } }, mounted() { this.fetchData(); // 第一次加载数据 }, watch: { // 监听数据变化,如果需要刷新数据时也更新axis的数据 // 如:当某个选项改变时需要重新请求数据并刷新图表 options: { handler(newOptions) { // 其他数据刷新的操作 this.fetchData(); // 更新axis的数据 }, deep: true } } ``` 通过以上方式可以解决Vue项目中echarts图表重复加载和axis重复多次请求的问题,提高页面的性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Boogaloo-Jer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值