element中的tabs标签页引用其他页面使用

本文介绍了两种使用Vue实现标签页组件的方法。第一种方法通过直接定义`el-tabs`组件并设置其属性来创建标签页。第二种方法展示了如何利用Vue的状态管理和事件监听功能,通过`v-model`和自定义事件来控制标签页的切换,并动态加载不同的子组件内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方式一

<el-tabs type="border-card">
//  type的值也可为  card
  <el-tab-pane label="设置">
        <aa></aa>
      </el-tab-pane>

      <el-tab-pane label="查看">
        <bb></bb>
      </el-tab-pane>
</el-tabs>
<script>
import aa from '../aa'
import bb from '../bb'
export default {
  name: 'Tabs',
  components: {
    aa,
    bb
  },
  data () {
    return {}
  },
  methods: {}
};
</script>

 

方式二 

<div class="tabZujian">

    <el-tabs
      v-model="activeName"
      @tab-click="handleClick"
    >
      <el-tab-pane
        label="设置"
        name="first"
        :key="'first'"
      >
        <aa
          v-if="isChildUpdate1"
          @saveFrom="saveFrom"
        ></aa>
      </el-tab-pane>

      <el-tab-pane
        label="查看"
        name="second"
        :key="'second'"
      >
        <bb
          v-if="isChildUpdate2"
          @editData="editData"
        ></bb>
      </el-tab-pane>
    </el-tabs>

  </div>
<script>
import aa from '../aa'
import bb from '../bb'
export default {
  name: 'Tabs',
  components: {
    aa,
    bb
  },
  data () {
    return {
      //默认第一个选项卡
      activeName: "first",
      isChildUpdate1: true,
      isChildUpdate2: false,
    }
  },
  methods: {
    handleClick (tab) {
      if (tab.name == "first") {
        this.isChildUpdate1 = true;
        this.isChildUpdate2 = false;
      } else if (tab.name == "second") {
        this.isChildUpdate1 = false;
        this.isChildUpdate2 = true;
      }
    },
    editData (id) {
      this.activeName = "first"
      this.isChildUpdate1 = true;
      this.isChildUpdate2 = false;
    },
    saveFrom () {
      this.activeName = "second"
      this.isChildUpdate1 = false;
      this.isChildUpdate2 = true;
    }
  }
};
</script>

 

 

### 解决 Element UI Tabs 标签页切换时出现闪烁的问题 在使用 `el-tabs` 组件时,可能会遇到标签页切换过程中页面内容闪烁的情况。这通常是由于 DOM 结构的变化引起的视觉效果问题。为了有效解决这一现象,可以采取以下几种方法: #### 方法一:设置缓存属性 通过给 `el-tab-pane` 添加 `v-if` 或者更推荐的方式是使用 `keep-alive` 来保持组件状态,从而减少不必要的重新渲染。 ```html <template> <div id="app"> <!-- 使用 keep-alive 缓存 tab pane --> <el-tabs v-model="activeName" type="card"> <el-tab-pane label="Tab 1" name="first"> <keep-alive> <component-a></component-a> </keep-alive> </el-tab-pane> <el-tab-pane label="Tab 2" name="second"> <keep-alive> <component-b></component-b> </keep-alive> </el-tab-pane> </el-tabs> </div> </template> <script> export default { data() { return { activeName: 'first' }; } }; </script> ``` 这种方法能够确保当用户在不同选项卡之间来回切换时不丢失数据和视图的状态[^1]。 #### 方法二:调整 CSS 过渡动画 有时,默认的过渡效果可能导致短暂的空白期或闪屏。可以通过自定义样式来优化这个过程,比如禁用默认的淡入淡出效果或者微调时间轴上的某些关键帧。 ```css /* 移除默认 transition */ .el-tabs__content .is-active { display: block !important; } /* 自定义平滑过渡 */ .fade-enter-active, .fade-leave-active { transition: opacity .3s ease-out; } .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { opacity: 0; } ``` 上述代码片段展示了如何移除原有的显示/隐藏逻辑中的延迟,并引入更加流畅的渐变效果[^2]。 #### 方法三:检查并修正异步加载行为 如果存在懒加载机制,则需确认资源请求时机是否合理;过早发起网络请求而未等到目标容器准备好就插入新节点也会造成瞬态性的白屏现象。对于这种情况建议推迟到首次访问对应 Tab 后再触发相应的 AJAX 调用或其他耗时操作。 综上所述,以上三种策略可以帮助缓解甚至完全消除因频繁更新引起的内容跳动问题,在实际项目开发中可根据具体需求灵活选用合适的解决方案。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值