tab页切换时,折线图会被挤压的解决办法

遇到两次了,记录一下

如果默认展示的是折线图页面,就没有问题

如果需要切换才到折线图,就会出现折线图被挤压变形的问题

原因:折线图在初始加载时没有正确获取到父容器的尺寸或者隐藏状态导致的。

解决办法:延迟加载折线图

                  这意味着在用户切换到展示折线图的标签页后再进行折线图的初始化和绘制。这样可   以确保折线图在加载时能够正确获取到父容器的尺寸,并避免初始化时的变形问题。

代码如下:

<template>
  <el-tabs v-model="activeTab">
    <el-tab-pane label="折线图" name="lineChartTab">
      <div v-if="activeTab === 'lineChartTab'">
        <LineChart v-if="lineChartInitialized" />
      </div>
    </el-tab-pane>
    <el-tab-pane label="其他标签页" name="otherTab">
      <!-- 其他标签页的内容 -->
    </el-tab-pane>
  </el-tabs>
</template>

<script>
import LineChart from './LineChart.vue'; // 假设你有一个单独的组件来显示折线图

export default {
  components: {
    LineChart
  },
  data() {
    return {
      activeTab: 'lineChartTab', // 当前活动的标签页
      lineChartInitialized: false // 标记折线图是否已初始化
    };
  },
  watch: {
    activeTab(newTab) {
      if (newTab === 'lineChartTab' && !this.lineChartInitialized) {
        // 切换到展示折线图的标签页,且折线图尚未初始化
        this.initializeLineChart();
      }
    }
  },
  methods: {
    initializeLineChart() {
      // 在这里进行折线图的初始化和绘制操作,可以调用组件方法或者直接设置数据
      // 示例中假设在LineChart组件中有一个方法或者数据初始化来绘制折线图
      // 例如:this.$refs.lineChart.initialize(); 或者设置数据
      this.lineChartInitialized = true;
    }
  },
  mounted() {
    // 页面加载时也可以初始化折线图,如果需要的话
    // this.initializeLineChart();
  }
};
</script>

好🦌

  • 12
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值