antd vue Tabs控件的使用

Ant Design Vue-------Tabs标签页

今天就讲讲Ant Design Vue下的控件----tabs 标签页

结合项目中的需求,讲一下该控件如何使用,需求:

(1)竖排样式
(2)如何使用v-for绑定数据源
(3)change事件
(4)动态生成、动态切换(子组件和component、keepAlive、nextTick的联合使用)

官网案例来一个:

<template><a-tabs v-model:activeKey="activeKey"><a-tab-pane key="1" tab="Tab 1">Content of Tab Pane 1</a-tab-pane><a-tab-pane key="2" tab="Tab 2" force-render>Content of Tab Pane 2</a-tab-pane><a-tab-pane key="3" tab="Tab 3">Content of Tab Pane 3</a-tab-pane></a-tabs>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
const activeKey = ref('1');
</script>

效果如图:

项目中的代码:

<div style="height: calc(100vh - 230px)"><a-tabs v-model:activeKey="activeItem" tab-position="left" @change="handleTabChange"><a-tab-pane v-for="item in itemSource" :tab="item.dictionaryMenuName" :disabled="item.isHas == 1 ? false : true" :key="item.dictionaryName.split('|')[0]" /></a-tabs></div>

1. div的样式控制垂直滚动条;

2.属性设置:

(1)v-model:activeKey 绑定的是用户当前选择的tab的key值;

(2)tab-position:共4个位置;top默认顶端;left:左侧竖排展示;right:右侧竖排展示;bottom:底部,如图:

(3)size:共三种大小;small:小,large:大,middle:默认值,如下图:

(4)type:页签的基本样式,三个类型。line、card、editable-card

(5)Tabs.TabPane控件a-tab-pane元素和for搭配使用,itemSource:数据源(数组),item:对象。 tab:选项卡的标题;key:唯一标识,对应activeKey;disabled:根据flag指定该标签是否可用。

(6)样式:

 :deep(.ant-tabs-left > .ant-tabs-nav .ant-tabs-tab) {

    width: 265px;

    padding: 2px 20px;

    margin: 2px 0 0;

  }

3. script setup lang="ts"  和 tabs的change事件

import { onMounted, ref, reactive, toRaw, toRef, computed } from 'vue';const activeItem = ref('');
const itemSource = ref([]);function queryTabsList() {let queryJson = {};//往后端传值Query(queryJson).then((res) => {//Query:APIitemSource.value = res;activeItem.value = null;//默认选项卡都未选中
}
//tabs选择事件async function handleTabChange(key) {console.log('key',key);//var arr = key.split('|');//if (arr.length > 0) {//    let selItem = arr[0]; //英文名称//    let dtoName = arr[1];//中文名称//  ……//}
}

4. 下面讲讲更复杂的应用,这种场景,一般用于tabs菜单动态切换功能。

(1)模板

<template><div class="bottom-main"><a-tabs v-model:activeKey="activeKey" tabPosition="top" @change="tabItemSelected" size="small" type="card" style="height: 40px"><a-tab-pane v-for="item in menuTabs" :key="`${item?.value}`" :tab="item?.label" /></a-tabs><KeepAlive v-if="isAlive"><component :is="currentPage" :param-condition="whereCond" /></KeepAlive></div></template>

(2)脚本

const activeKey = ref('');const menuTabs = ref([]);function initTab() {let query = {name: 'getClass',queryParams: {},};Query(cbxQuery).then((res) => {//Query:APImenuTabs.value = res;});}//控制是否强制刷新
const isAlive = ref(true);
const currentPage = ref();//当前组件
const whereCond = reactive({//当前页面传值给子组件的参数proId: '', //项目名称});
//模拟的一组子组件
const typeCompentMap = {base: input1,//引入input1组件invest: input2,//引入input2组件product: input3,//引入input3组件price: input4,//引入input4组件};
//tab切换事件
function tabItemSelected() {currentPage.value = typeCompentMap[activeKey.value];}
//挂载事件
onMounted(() => {initTab();});
//查询事件时刷新tab子组件function handleSearch() {activeKey.value = 'base';whereCond.proId = selectedProjectId.value; if (whereCond.proId) {refreshChild();}}function refreshChild() {isAlive.value = false;currentPage.value = typeCompentMap[activeKey.value];nextTick(() => {//利用nextTick更新机制,强制刷新页面isAlive.value = true;});}

vue 中我们改变数据时不会立即触发视图,如果需要实时获取到最新的DOM,这个时候可以手动调用 nextTick

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决GitHub提交时不显示自己的头像 显示另一个账号(其实也是自己)

git show 看看是否是自己的githup 账号的邮箱 如果不是进行下列操作 git config user.email “你的邮箱地址”,修改邮箱 修改完以后输入git config user.email 检查是否修改成了你的邮箱 如果你想其他项目提交时,也避免此类情况,把上面的两条命令改成 &#xff08;1&#…

当HR问你为什么申请这个职业,你该怎么回答?【文章底部添加进大学生就业交流群】

目录 强调对公司的了解&#xff1a; 突出你的技能和经验&#xff1a; 表达对行业的热情&#xff1a; 谈论个人发展&#xff1a; 对公司的价值观的契合&#xff1a; 当HR问你为什么申请这个职业时&#xff0c;你可以通过以下方式回答&#xff1a; 强调对公司的了解&#xf…

物联网导论

物联网起源 物联网&#xff1a;是一个基于互联网、传统电信网等信息承载体&#xff0c;让所有能够被独立寻址的普通物理对象实现互联互通的网络。它具有普通对象设备化、自治终端互联化和普适服务智能化三个重要特征。 按照规定的协议&#xff0c;将具有感知、通信、计算等功…

Linux入门基本指令(1)

✨前言✨ &#x1f4d8; 博客主页&#xff1a;to Keep博客主页 &#x1f646;欢迎关注&#xff0c;&#x1f44d;点赞&#xff0c;&#x1f4dd;留言评论 ⏳首发时间&#xff1a;2024年3月12日 &#x1f4e8; 博主码云地址&#xff1a;渣渣C &#x1f4d5;参考书籍&#xff1a;…

【Python】新手入门学习:什么是工作目录?

【Python】新手入门学习&#xff1a;什么是工作目录&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得…

L2-006 树的遍历(Java)

给定一棵二叉树的后序遍历和中序遍历&#xff0c;请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。 输入格式&#xff1a; 输入第一行给出一个正整数N&#xff08;≤30&#xff09;&#xff0c;是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中…

使用OCC进行阵列操作

OCC中实现阵列操作&#xff0c;本质上计算出物体的位置&#xff0c;然后进行位置变换&#xff0c;复制出一个新的物体的过程&#xff0c;下列用直线的阵列和环形的阵列作为例子&#xff1a; 直线阵列&#xff1a;以一个在z轴正方向的直线向y轴方向阵列2个距离为5的对象 #inclu…

hcia datacom课程学习(2):telnet与ssh

telnetssh所属层应用层应用层所应用的传输层协议tcptcp功能远程连接远程连接默认端口2322安全性很低较高功能组件分布客户端、服务器端客户端、服务器端linux环境不自带自带windows环境 win7有客户端和服务器端&#xff0c;但需要手动打开。 win10只有客户端&#xff0c;也需要…

Winform程序中UI更新延迟

在 WinForm 中&#xff0c;UI 更新通常是在 UI 线程上进行的&#xff0c;如果你在 UI 线程之外的地方修改了 UI 元素&#xff0c;可能会导致更新有延迟&#xff0c;单纯的使用delegate也不能及时的更新UI。经实践&#xff0c;最终实现方案如下&#xff1a; this.Invoke((Method…

基于STM32G031LORA开发板的时间同步项目

一、前言 本项目采用淘宝购买的STM32G031开发板&#xff0c;板上预留了oled和LORA模块的IO&#xff0c;一次性买了四套&#xff0c;资料虽然质量不高&#xff0c;但是覆盖面挺广&#xff0c;有一定的学习价值。 实验目的是需要三个从机实现时间轴的一致&#xff0c;考虑到现有环…

分词组合加密实现加密后可模糊查询

分词组合加密实现加密后可模糊查询 之前有次遇到一个数据库敏感字段脱敏的需求&#xff0c; 使用mybaits对数据库内的敏感字段进行加解密&#xff0c; 但是在加密储存之后&#xff0c;业务上但凡涉及到加密的字段都没办法进行模糊搜索 Mybatis插件对指定字段加解密 最近要实现…

鸿蒙原生应用元服务开发-WebGL网页图形库开发接口说明

一、场景介绍 WebGL主要帮助开发者在前端开发中完成图形图像的相关处理&#xff0c;比如绘制彩色图形等。目前该功能仅支持使用兼容JS的类Web开发范式开发。 二、接口说明 表1 WebGL主要接口列表 本文参考引用HarmonyOS官方开发文档&#xff0c;基于API9。

期货开户市场的风险在哪里?

期货市场的风险在哪里&#xff1f;强平和穿仓是什么&#xff1f; 期货市场是一个自带杠杆的市场&#xff0c;简单理解就是我们只需要用10W就能买到价值100万的商品。期货主要的风险来源于仓位风险和交割风险&#xff0c;仓位风险就是我们是采用满仓还是轻仓方式交易。比如我们…

html5cssjs代码 003 50以内的乘法算式

html5&css&js代码 003 50以内的乘法算式 一、代码二、解释 综合应用代码示例。50以内的乘法算式。 一、代码 <!DOCTYPE html> <html lang"en"> <head><title>20以内的乘法</title><meta charset"UTF-8"><…

【和谐身心】植物神经紊乱?调整心态,重拾生活平衡!

在快节奏的现代生活中&#xff0c;许多人可能会遭遇植物神经紊乱的困扰&#xff0c;表现为焦虑、失眠、心悸等症状&#xff0c;严重影响生活质量。但请记住&#xff0c;您并不孤单&#xff0c;让我们一起探索如何调整心态&#xff0c;缓解这些不适&#xff0c;恢复身心和谐。 植…

32个关键字详解①(C语言)

目录 关键字分类&#xff1a; 第一个C程序 - 补充内容 变量的定义与声明 - 补充内容 变量的分类 - 补充内容 变量的作用域 - 补充内容 变量的生命周期 - 补充内容 auto 关键字 register 关键字 static 关键字 static 修饰变量&#xff1a; static修饰函数 sizeof 关键字 基本数…

docker私有仓库-harbor的搭建

docker 官方提供的私有仓库 registry&#xff0c;用起来虽然简单 &#xff0c;但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器&#xff0c;harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker di…

全排列+力扣

题目 题目链接 . - 力扣&#xff08;LeetCode&#xff09; 题目描述 代码实现 class Solution {vector<vector<int>> ret;vector<int> path;bool used[7]; public:vector<vector<int>> permute(vector<int>& nums) {_permute(nums…

C++_包装器

目录 1、包装器的用法 2、包装器的类型 3、包装器的作用 4、包装成员函数 5、bind&#xff08;绑定&#xff09; 5.1 bind的用法 5.2 bind减少参数个数 结语 前言&#xff1a; C11的包装器&#xff0c;总称为function包装器&#xff0c;而包装器又称适配器…

allegro PCB设计心得笔记(二) -- ERROR(SPMHUT-144): Illegal arc specification

使用Allegro PCB Editor设计PCB&#xff0c;其中使用了中文丝印&#xff0c;设计完成后&#xff0c;进行Tools -> Database Check&#xff0c;提示如下错误&#xff1a; 对PCB文件进行反复检查&#xff0c;也没有找到具体问题&#xff0c;但是删除中文丝印封装后&#xff0c…