vue项目中elementUI中tabs标签页点击切换 发起网络请求 tab-click

vue项目中elementUI中tabs标签页点击切换 发起网络请求 tab-click

  • 一般对于这种标签页的请求,都是切换进去才会请求该页的数据
  • 如果在页面一加载就请求出所有的数据,会造成数据堵塞,对性能有很大的影响
  • 所以要在tabs标签页点击切换 的时候发起相应的网络请求,在这里用到的tab-click这个事件。

官网中的tabs标签页效果:
在这里插入图片描述
示例代码:

<template>
  <el-tabs v-model="activeName" @tab-click="handleClick">
    <el-tab-pane label="用户管理" name="first">用户管理</el-tab-pane>
    <el-tab-pane label="配置管理" name="second">配置管理</el-tab-pane>
    <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
    <el-tab-pane label="定时任务补偿" name="fourth">定时任务补偿</el-tab-pane>
  </el-tabs>
</template>
<script>
  export default {
    data() {
      return {
        activeName: 'second'   
      };
    },
    methods: {
      handleClick(tab, event) {
        console.log(tab, event);
      }
    }
  };
</script>
  • data 里的 activeName 代表默认显示的第几个tab页
  • tab-click标签事件:tab 被选中时触发,他的返回值是被选中的标签 tab 实例
    在这里插入图片描述
  • handleClick 是点击事件的名称,有两个参数,tabevent对两个参数打印一下,得出下面的结果
    在这里插入图片描述
    其中 tab 的参数里有个 index 值,可以作为标签页切换的索引,所以可以在这里加判断,然后进行网络请求
    在这里插入图片描述
 // tabs标签页切换事件
    handleClick(tab, event) {
      console.log(tab, event);
      if (tab.index == 1) {
        //网络请求1      
      } else if (tab.index == 2) {
        //网络请求2    
      } else {
       //网络请求3
      }
    }

ok,完成

  • 19
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,我知道你想问什么。首先,我们需要创建一个 Tabs 组件,并且在组件使用 v-for 循环来渲染标签。以下是一个简单的示例代码: ```html <template> <div class="tabs"> <div class="tab" v-for="(tab, index) in tabs" :key="index" :class="{ 'active': activeTab === index }" @click="activeTab = index"> {{ tab.label }} </div> <div class="tab-content"> <slot :name="tabs[activeTab].label"></slot> </div> </div> </template> <script> export default { name: 'Tabs', data() { return { activeTab: 0, tabs: [ { label: 'Tab 1' }, { label: 'Tab 2' }, { label: 'Tab 3' } ] } } } </script> <style> .tabs { display: flex; flex-direction: column; } .tab { cursor: pointer; padding: 10px; border: 1px solid #ccc; border-bottom: none; } .tab.active { background-color: #ccc; } .tab-content { border: 1px solid #ccc; padding: 10px; } </style> ``` 在上面的示例,我们使用了一个名为 tabs 的数组来存储每个标签的信息。我们使用 v-for 循环来渲染每个标签标签,并且使用 activeTab 变量来追踪当前选标签。当用户单击标签时,我们将更新 activeTab 变量,并使用插槽来渲染相应的标签内容。 如果你想根据不同的标签来显示不同的表格内容,你可以在插槽使用 v-if 或者 v-show 来判断应该显示哪个表格。例如: ```html <template> <div class="tabs"> <div class="tab" v-for="(tab, index) in tabs" :key="index" :class="{ 'active': activeTab === index }" @click="activeTab = index"> {{ tab.label }} </div> <div class="tab-content"> <table v-if="tabs[activeTab].label === 'Tab 1'"> <!-- 表格 1 的内容 --> </table> <table v-else-if="tabs[activeTab].label === 'Tab 2'"> <!-- 表格 2 的内容 --> </table> <table v-else-if="tabs[activeTab].label === 'Tab 3'"> <!-- 表格 3 的内容 --> </table> </div> </div> </template> ``` 在上面的示例,我们使用了 v-if 和 v-else-if 来判断当前选标签是哪个,并根据不同的标签显示不同的表格内容。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值