• 在vue3项目中使用el-tabs切换标签页时echarts图表显示不正确


    一.ElementPlus中使用el-tabs

           el-tabs标签页是用来分隔内容上有关联但是属于不同类别的数据集合。Tabs组件提供了选项卡功能,默认选中第一个标签页,也可以通过value属性来指定当前选中的标签页.此外,el-tabs还提供了tab-click方法,来实现切换标签也触发的事件。下面是一个简单的示例:

    1. <script lang="ts" setup>
    2. import { ref } from 'vue'
    3. import type { TabsPaneContext } from 'element-plus'
    4. const activeName = ref('first')
    5. const handleClick = (tab: TabsPaneContext, event: Event) => {
    6. console.log(tab, event)
    7. }
    8. script>

    二.解决切换el-tabs标签页时echarts不能正常显示问题:

               因为在el-tabs中,一次性的把el-tabs下的所有子组件都加载出来了,这样就会使得首次没有显示的图表在显示的时候也不会正常显示;而且,在echarts挂载的dom元素有一个属性,echarts_instance,我们理解这个属性它类似于一个id,它需要每次刷新重新生成。所以在每次切换标签页的时候,就会导致echarts图表宽度高度显示不正常。

          2.1在el-tab-pane中使用lazy属性:

    "数量" key="first" name="first" :lazy="true">

    在el-tab-pane中设置lazy属性为true,就表示延迟渲染,这样,echarts就可以渲染出正常的高度和宽度了。

           2.2使用v-if判断切换当前标签页时再渲染内容:

                 第一种方法我们利用的是标签页自带的lazy属性,但是我们还可以使用v-if来绑定切换标签页时再来渲染图表的事件,使用v-if方法来实现在el-tabs中只有首次显示的值为true,当点击tab切换的时候改变v-if的值,从而解决图表不能正常显示问题

    1. "border-card" @tab-click="handleTab" v-model="activeTab" style="margin-top: 10px;">
    2. <topHeader first="创建时间" :second="second" last="排序"/>
    3. <el-tab-pane label="帖子列表" name="first" >
    4. <div class="chart">
    5. <myChart :data="chartData1" />
    6. div>
    7. <dataList :postLabel="postLabel" :postData="postData">dataList>
    8. el-tab-pane>
    9. <el-tab-pane label="举报审核" name="second" :key="activeTab">
    10. <div class="chart">
    11. <myChart :data="chartData2" v-if="key='activeTab'"/>
    12. div>
    13. <dataList :reportLabel="reportLabel" :reportData="reportData">dataList>
    14. el-tab-pane>
    15. //当前激活的标签页
    16. const activeTab=ref('first');
    17. const second=ref('作者');
    18. //切换标签页头部内容改变
    19. const handleTab = (tab: any) => {
    20. const name = tab.props.name
    21. if (name === 'first') {
    22. second.value = '作者';
    23. }
    24. else if (name === 'second') {
    25. second.value = '举报者';
    26. }
    27. }

    这样,给v-if绑定每个标签页选项的key值,只有切换到当前标签页的时候,才会加载该图表,解决图表中不能正常显示的问题。 

           

          

  • 相关阅读:
    在Git上,提交记录有误,修改commit方法
    HTTP 面试知识点提炼
    数商云供应链集采管理系统解决方案:集采系统管理模式,数字化管控企业物资
    算法进阶-2sat-cf-1697F
    浅析vue3PDF插件不显示文字
    BEV(Bird’s-eye-view)三部曲之二:方法详解
    【C++ 初阶】引用 (&) 实际的一些用法、常引用问题 详解!
    稠密重建视觉SLAM开源算法(效果好的那种)
    Python中类型的可变和不可变、变量赋值浅复制深复制后变量id的变化、小整数、拆包应用交换两个变量的值和Python中几种输出方式
    永磁同步电机转子位置估算专题——正交锁相环
  • 原文地址:https://blog.csdn.net/xllllll___/article/details/139035427