如何在Vue.js中实现标签页组件详解

您所在的位置:网站首页 vue如何实现选项卡 如何在Vue.js中实现标签页组件详解

如何在Vue.js中实现标签页组件详解

2023-03-24 08:13| 来源: 网络整理| 查看: 265

前言

标签页组件,即实现选项卡切换,常用于平级内容的收纳与展示。

因为每个标签页的内容是由使用组件的父级控制的,即这部分内容为一个 slot。所以一般的设计方案是,在 slot 中定义多个 div,然后在接到切换消息时,再显示或隐藏相关的 div。这里面就把相关的交互逻辑也编写进来了,我们希望在组件中处理这些交互逻辑,slot 只单纯处理业务逻辑。这可以通过再定义一个 pane 组件来实现,pane 组件嵌在 tabs 组件中。

1 基础版

因为 tabs 组件中的标题是在 pane 组件中定义的,所以在初始化或者动态变化标题时,tabs 组件需要从 pane 组件中获取标题。

html:

标签页组件 火星疑似发现“外星人墓地”?至今无法解释 全美沸腾!湖人队4年1.2亿迎顶级后卫,詹姆斯:有他就能夺冠 阿米尔汗谈中国武侠 想拍印度版《鹿鼎记》 var app = new Vue({ el: '#app', data: { activeIndex: 0 } });

pane 组件:

Vue.component('pane', { name: 'pane', template: ' ', props: { //标题 label: { type: String, default: '' } }, data: function () { return { //显示或隐藏 isShow: true } }, methods: { //通知父组件,更新标题 init() { this.$parent.init(); } }, watch: { //当 label 值发生变化时,更新标题 label() { this.init(); } }, //挂载时,更新标题 mounted() { this.init(); } });

在 pane 组件中,我们做了以下设计:

因为 pane 组件需要控制标签页内容的显示与隐藏,所以我们在 data 中定义了一个 isShow,并用 v-show 指令来控制内容的显示或隐藏。当点击这个 pane 所对应的标签页标题时,它的 isShow 被设置为 true。 我们需要一个标识来识别不同的标签页标题,本示例用的是 pane 组件定义顺序的索引。 在 props 中定义了 label,用于存放标题。因为 label 可以动态变化,所以必须在挂载 pane 以及当 label 值发生变化(通过监听实现)时,通知父组件,重新初始化标题。因为 pane 是独立组件,所以这里使用了 this.$parent 来调用父组件 tabs 的初始化方法。  1/5    1 2 3 4 5 下一页 尾页


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3