vue + element ui中tabs页面组件切换数据更新

vue + element ui中tabs页面组件切换数据更新

开发中遇到了一个问题就是我使用element ui中的tabs组件时候,每一个tab内嵌套了一个组件页面,但是我发现当切换之后,生命周期都没有走,页面的方法也没有触发
5个tabs 中放了5个页面组件,第一次进来后,5个组件内的接口都全部请求了,点击切换tab将不再触发接口
在这里插入图片描述

解决方法就是

可以采用 tabs的name和每一个组件的隐藏状态同名,并且每一个组件的隐藏状态值都是tabsArr里面的值,并且放在tabsArr里面
当切换之后 对应handleClick方法会判断当前点击的页面name和tabsArr对象里面哪一个属性名相同,如果相同就改为true,反之其他的隐藏状态改为false

<template>
  <div>
    <el-tabs v-model="activeName" @tab-click="handleClick">
      <el-tab-pane label="1" name="first">
        <Legalpay
            caption="充币数据管理"
            v-if="tabsArr.first"
          />
      </el-tab-pane>

      <el-tab-pane label="2" name="second">
        <Legalpay
            caption="提币数据管理"
            v-if="tabsArr.second"
          />
      </el-tab-pane>

      <el-tab-pane label="3" name="third">
        <Legalpay
            caption="法币充值数据管理"
            v-if="tabsArr.third"
          />
      </el-tab-pane>
      <el-tab-pane label="4" name="fourth">
        <Legalpay
            caption="法币提现数据管理"
            v-if="tabsArr.fourth"
          />
      </el-tab-pane>
      <el-tab-pane label="5" name="fifth">
        <Legalpay
            caption="国际电汇数据管理"
            v-if="tabsArr.fifth"
          />
      </el-tab-pane>
    </el-tabs>
  </div>
</template>

<script>
import Legalpay from './Statisticspage'
export default {
  components: { Legalpay },
  data() {
    return {
      activeName: "first",
      tabsArr: {
        first: true,
        second: false,
        third: false,
        fourth: false,
        fifth: false
      },
    };
  },
  methods: {
    tabs的切换点击方法 tab中的name是当前点击选中的那一项的name的值
    handleClick(tab) {
      for (var key in this.tabsArr) {
        if (tab.name != key) {
          this.tabsArr[key] = false;
        } else {
          this.tabsArr[key] = true;
        }
      }
    },
  },
  created() {},
};
</script>


按照原文链接方法改的,可行。

原文链接:https://blog.csdn.net/qq_42628504/article/details/121324815

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了实现Vue+Element UI仿微信at联系人的功能,可以按照以下步骤进行: 1. 首先安装VueElement UI,可以使用npm进行安装。 2. 在Vue使用Element UI组件,可以在需要使用的组件引入,例如: ```javascript import { Input, Autocomplete } from 'element-ui'; export default { components: { 'el-input': Input, 'el-autocomplete': Autocomplete } } ``` 3. 在页面使用Autocomplete组件实现at联系人的功能,例如: ```html <el-autocomplete v-model="inputValue" :fetch-suggestions="querySearchAsync" placeholder="请输入内容" @select="handleSelect"> <template slot-scope="{ item }"> <div class="name">{{ item.value }}</div> </template> </el-autocomplete> ``` 在data定义inputValue,querySearchAsync方法用于异步获取联系人列表,handleSelect方法用于选择联系人后的回调。 4. 根据微信的UI样式,可以自定义Element UI的样式,例如: ```css .el-autocomplete .el-input__inner { padding-left: 30px; } .el-autocomplete .el-input__suffix { font-size: 16px; color: #999; left: 10px; } .el-autocomplete .el-autocomplete-suggestion__list { margin-top: 0; border-radius: 0; box-shadow: none; border: 1px solid #dcdfe6; } .el-autocomplete .el-autocomplete-suggestion__item { padding: 10px 20px; font-size: 14px; color: #333; } .el-autocomplete .el-autocomplete-suggestion__item:hover { background-color: #f5f7fa; } ``` 5. 最后,根据微信的UI布局,可以使用Element UITabs组件实现左侧联系人列表和右侧消息窗口的切换,例如: ```html <el-tabs v-model="activeTab"> <el-tab-pane label="联系人列表" name="contact-list"> <!-- 联系人列表 --> </el-tab-pane> <el-tab-pane label="消息窗口" name="message-window"> <!-- 消息窗口 --> </el-tab-pane> </el-tabs> ``` 在data定义activeTab,用于控制Tabs切换

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值