vue3.0 关于Tabs 标签页切换页面不调接口问题

 在用vue3.0写页面时,点击el-tabs时没有调到接口,而是在第一个页面把所有的接口都调了一遍。每个接口所携带的参数又不一样,这就导致了接口报错,这不是我们想要的。这时我们可以给每个tabs加个判断,当我们点击的tabs名字和我们加的名字一致时,才调接口,之后就不会出现第一个页面调所有接口的情况了。

具体代码如下:

  <el-tabs
        type="border-card"
        class="demo-tabs"
        v-model="user.activeName"
        @tab-click="handleClick"
        :key="tabIndex"
      >
        <el-tab-pane name="first">
          <template #label>
            <span class="custom-tabs-label">
              <el-icon><Clock /></el-icon>
              <span>流量查询</span>
            </span>
          </template>
          <historyFlow v-if="tabsArray.first"></historyFlow>
        </el-tab-pane>
        <el-tab-pane name="second">
          <template #label>
            <span class="custom-tabs-label">
              <el-icon><Calendar /></el-icon>
              <span>账户查询</span>
            </span>
          </template>
          <accounts v-if="tabsArray.second"></accounts>
        </el-tab-pane>
        <el-tab-pane name="third">
          <template #label>
            <span class="custom-tabs-label">
              <el-icon><Tickets /></el-icon>
              <span>访问查询</span>
            </span>
          </template>
          <accountsTopu v-if="tabsArray.third"></accountsTopu>
        </el-tab-pane>
        <el-tab-pane name="fourth">
          <template #label>
            <span class="custom-tabs-label">
              <el-icon><Grid /></el-icon>
              <span>信息查询</span>
            </span>
          </template>
          <traceabApply v-if="tabsArray.fourth"></traceabApply>
        </el-tab-pane>
      </el-tabs>
const user = reactive({
  activeName: 'first',
});
const tabsArray = reactive({
  first: true,
  second: false,
  third: false,
  fourth: false,
  fifth: false,
});
// tabs的切换点击方法 tab中的paneName是当前点击选中的那一项的name的值
const handleClick = tab => {
  for (var key in tabsArr) {
    if (tab.paneName!= key) {
      tabsArr[key] = false;
    } else {
      tabsArr[key] = true;
    }
  }
};

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3实现Tabs标签可以使用组件化的思路,将每个标签作为一个组件,再将所有标签组合成一个Tabs组件。以下是一个简单的实现: 1. 创建Tabs组件 ``` <template> <div class="tabs"> <div class="tab-header"> <div v-for="(tab, index) in tabs" :key="index" :class="['tab-header-item', { 'active': currentIndex === index }]" @click="changeTab(index)"> {{ tab.title }} </div> </div> <div class="tab-content"> <slot></slot> </div> </div> </template> <script> export default { name: 'Tabs', data() { return { currentIndex: 0, tabs: [] } }, methods: { changeTab(index) { this.currentIndex = index } }, mounted() { this.tabs = this.$children.map((component) => { return { title: component.title } }) } } </script> <style> .tabs .tab-header { display: flex; justify-content: space-between; border-bottom: 1px solid #ccc; } .tabs .tab-header-item { padding: 10px; cursor: pointer; } .tabs .tab-header-item.active { border-bottom: 2px solid #333; } .tabs .tab-content { padding: 10px; } </style> ``` 2. 创建Tab标签组件 ``` <template> <div v-show="isActive"> <slot></slot> </div> </template> <script> export default { name: 'Tab', props: { title: { type: String, required: true } }, data() { return { isActive: false } }, mounted() { this.isActive = this.index === 0 }, computed: { index() { return this.$parent.tabs.length } } } </script> ``` 3. 在Tabs组件中引用Tab标签组件 ``` <template> <div> <Tabs> <Tab title="Tab 1"> <p>Tab 1 content</p> </Tab> <Tab title="Tab 2"> <p>Tab 2 content</p> </Tab> <Tab title="Tab 3"> <p>Tab 3 content</p> </Tab> </Tabs> </div> </template> <script> import Tabs from './Tabs.vue' import Tab from './Tab.vue' export default { name: 'App', components: { Tabs, Tab } } </script> ``` 以上代码实现了一个简单的Tabs标签,可以通过修改样式和添加其他功能来满足实际需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值