vue子组件echarts图表resize问题

1、父组件和单个子组件中使用window.onresize问题

子组件中的会没有作用,解决办法:在子组件中使用addEventListener("resize",callback)替代(可参考https://blog.csdn.net/believet93/article/details/107255405

2、父组件和多个子组件时,方案1的办法也不能奏效

解决办法:在父组件中监听window.onresize方法,并设置一个变量(resize),然后在子组件中监听变量(resize)的变化

// 父组件中监听窗口大小改变,并保存在vuex的状态管理器中
mounted() {
    window.onresize = () => {
      // 窗口大小变化
      this.$store.dispatch(
        "setResize",
        document.body.clientHeight + document.body.clientWidth
      );
    }
}

在子组件中获取resize

  computed: {
    // 窗口大小
    size: function () {
      // 获取父组件中设置的resize变量
      return this.$store.state.resize;
    },
  },

  watch: {
    // 窗口大小改变时重绘echarts图形,调用echarts两次resize方法是为了解决
    // 点击浏览器最大最小化按钮时echarts图形没有按照预期的
    size: function (nv,ov) {
      this.chart.resize();
      setTimeout(() => {
        this.chart.resize();
      }, 50);
    }
  }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值