ElementPlus-Table表格-单选--TypeScript进阶篇
今天看个例子,这个例子是ElementPlus的组件Table表格下面的单选
<template>
<el-table
ref="singleTableRef"
:data="tableData"
highlight-current-row
style="width: 100%"
@current-change="handleCurrentChange"
>
<el-table-column type="index" width="50" />
<el-table-column property="date" label="Date" width="120" />
<el-table-column property="name" label="Name" width="120" />
<el-table-column property="address" label="Address" />
</el-table>
<div style="margin-top: 20px">
<el-button @click="setCurrent(tableData[1])">Select second row</el-button>
<el-button @click="setCurrent()">Clear selection</el-button>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import { ElTable } from 'element-plus'
interface User {
date: string
name: string
address: string
}
const currentRow = ref()
const singleTableRef = ref<InstanceType<typeof ElTable>>()
const setCurrent = (row?: User) => {
singleTableRef.value!.setCurrentRow(row)
}
const handleCurrentChange = (val: User | undefined) => {
currentRow.value = val
}
const tableData: User[] = [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
</script>
注意到<script lang="ts" setup>,这个lang=”ts“表明其中的脚本解释会使用TypeScript。
然后再看const singleTableRef = ref<InstanceType<typeof ElTable>>()这行,typeof ElTable表明会返回一个叫做ElTable名字的东西的类型,typeof类型运算符是JavaScript在表达式上下文中使用的运算符。typeof ElTable有可能会获得父类类型,那最终实例化的类型呢?
答案就是由InstanceType<Type>这个工具类型来获得最终实例化的类型。构造一个由 Type 中的构造函数的实例类型组成的类型。那么InstanceType<typeof ElTable>>就是得到<el-table
ref="singleTableRef">...</el-table>这个组件的类型。
ref是一个泛型函数,能捕获参数类型的函数,表现得能接收多种类型参数的函数。ref<InstanceType<typeof ElTable>>(),这样写就表明ref现在是接收<el-table
ref="singleTableRef">组件类型的参数的函数
最终写成const singleTableRef = ref<InstanceType<typeof ElTable>>(),那么就表示singleTableRef是接收<el-table
ref="singleTableRef">组件类型的参数的函数返回的对象
最后我们再看看如下方法
const setCurrent = (row?: User) => {
singleTableRef.value!.setCurrentRow(row)
}
row?: User表示row参数可能存在,也可能不存在,参数类型是User。
singleTableRef.value!这样写表明接收<el-table
ref="singleTableRef">组件类型的参数的函数返回的对象的value值不能是null或者undefined,!在这里是个非空断言运算符
ElementPlus是基于vue3写的UI框架,而vue3是用TypeScript写的javascript框架,在ElementPlus中既可以写vue3,也可以写TypeScript
相关文章:
ElementPlus-Table表格-单选--TypeScript进阶篇
今天看个例子,这个例子是ElementPlus的组件Table表格下面的单选 <template> <el-table ref"singleTableRef" :data"tableData" highlight-current-row style"width: 100%" current-change"hand…...
三大智能体平台深度对比:字节Coze、百度AppBuilder、智谱智能体优劣解析
字节Coze智能体是一个多功能平台,具备丰富的功能和技能扩展能力。以下是它的一些核心功能和特性: 功能与技能 1. 插件功能 Coze智能体可以通过插件调用外部API,扩展智能体的能力。例如,它可以执行以下操作: 搜索信…...
【Flutter】基础入门:自定义Widget
在 Flutter 开发中,除了使用丰富的内置 Widgets 构建界面外,自定义 Widget 是让你的应用更灵活和个性化的重要手段。Flutter 允许你根据需求自定义 StatelessWidget 和 StatefulWidget,以实现复杂的 UI 组件或功能模块。 本教程将通过实例讲…...
程序员日志之DNF手游装备武器升级55级攻略
目录 传送门正文日志1、概要2、布甲3、皮甲4、轻甲5、重甲6、板甲7、武器 传送门 SpringMVC的源码解析(精品) Spring6的源码解析(精品) SpringBoot3框架(精品) MyBatis框架(精品) M…...
Java项目-基于springcloud框架的分布式架构网上商城系统项目实战(附源码+文档)
作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…...
ComfyUI_LayerStyle节点介绍
✨原作者地址 ComfyUI_LayerStyle是一个很强大的节点组,支持了大量图像处理的基础节点。这篇是简单搬运和翻译原作者的内容,方便大家更方便快速的了解这个节点的价值。 https://github.com/chflame163/ComfyUI_LayerStyle ✨节点描述 节点根据功能分…...
SQL Injection | SQL 注入 —— 时间盲注
关注这个漏洞的其他相关笔记:SQL 注入漏洞 - 学习手册-CSDN博客 0x01:时间盲注 —— 理论篇 时间盲注(Time-Based Blind SQL Injection)是一种常见的 SQL 注入技术,适用于那些页面不会返回错误信息,只会回…...
最新开发项目H5商城小程序源码系统 带源代码安装包以及搭建部署教程
系统概述 在当今数字化迅猛发展的时代,电子商务已成为企业拓展市场、提升品牌影响力的重要手段。H5商城小程序作为一种跨平台、轻量级的应用形式,凭借其无需下载安装、即用即走的特性,迅速赢得了广大用户的青睐。为了满足企业对高质量H5商城…...
5大绝招揭秘:Cursor如何让RESTful API开发效率提升300%?
5大绝招揭秘:Cursor如何让RESTful API开发效率提升300%? 在当今快速迭代的软件开发世界中,高效构建RESTful API已成为开发者的必备技能。今天,我们将为大家介绍一款强大的AI辅助工具——Cursor,它能让您的API开发事半功倍。 Cursor Compos…...
鸿蒙开发,在 ArkTS 中,如何使用 Column 实现垂直居中对齐
面向万物互联时代,华为提出了“一次开发多端部署、可分可合自由流转、统一生态原生智能”三大应用与服务开发理念。针对多设备、多入口、服务可分可合等特性,华为提供了多种能力协助开发者降低开发门槛。HarmonyOS基于JS/TS语言体系,构建了全…...
红日安全vulnstack (一)
目录 环境搭建 本机双网卡 Kali IP 靶机IP Web GetShell 前期信息收集 Yxcms后台模板 Getshell PHPMyAdmin日志 Getshell into outfile写入一句话 X phpmyadmin 日志写入一句话 后渗透 MSF 生成木马上线 提取用户hash值 **hash**加密方式 MSF权限Shell至CS CS …...
为什么SSH协议是安全的?
SSH的传输层协议(Transport Layer Protocol)和用户鉴权协议(Authentication Protocol)确保数据的传输安全,这里只介绍传输层协议,是SSH协议的基础。 本文针对SSH2协议。 1、客户端连接服务器 服务器默认…...
主键 外键
主键 外键 在关系型数据库中,主键(Primary Key)和外键(Foreign Key)是用于维护数据完整性和建立表之间关系的重要概念。 主键(Primary Key) 定义: 主键是一个或多个列的组合,其值能…...
G - Road Blocked 2
G - Road Blocked 2 思路 只有当一条边是从 1 1 1到 n n n的所有最短路构成的图的桥时,去掉这条边,最短路才会变大 所以就可以用最短路加tarjan解决这道题了 怎么判断一条边是否可以构成最短路呢,比如求 1 1 1到 n n n的最短路࿰…...
R语言绘制Venn图(文氏图、温氏图、维恩图、范氏图、韦恩图)
Venn图,又称文氏图,标题中其他名字也是它的别称,由封闭圆形组成,代表不同集合。圆形重叠部分表示集合交集,非重叠处为独有元素。在生物学、统计学等领域广泛应用,可展示不同数据集相似性与差异,…...
【Vue.js】vue2 项目在 Vscode 中使用 Ctrl + 鼠标左键跳转 @ 别名导入的 js 文件和 .vue 文件
js 文件跳转 需要安装插件 Vetur 然后需要我们在项目根目录下添加 jsconfig.json 配置,至于配置的作用,可以参考我的另外一篇博客: 【React 】react 创建项目配置 jsconfig.json 的作用 它主要用于配置 JavaScript 或 TypeScript 项目的根…...
NVM配置与Vue3+Vite项目快速搭建指南
本文目录 1、配置环境1.1 NVM1、nvm常用命令 1.2 Mac配置环境1、安装nvm 1.3 Window配置环境1、安装nvm 2、 项目搭建2.1 项目依赖2.2 安装依赖2.3 配置1、别名配置2、创建样式及图片文件夹3、路由 2.4 项目搭建效果2.5 项目结构 在当今快速发展的前端技术领域中,掌…...
面试“利器“——微学时光
大家好,我是程序员阿药。微学时光是一款专为计算机专业学生和IT行业求职者设计的面试刷题小程序,它汇集了丰富的计算机面试题和知识点,旨在帮助用户随时随地学习和复习,提高自身的技术能力和面试技巧。 主题 随时随地学习&#x…...
【Unity】【游戏开发】游戏引擎是如何模拟世界的
【核心感悟】 游戏引擎通过两个维度的合并来模拟这个时间。 一个维度叫物理模型。 一个维度叫视觉模型。 对于物理模型,我们需要用物理引擎给予行为。 对于视觉模型,我们需要用动画去给予行为。 物理模型是真实机制,视觉模型是艺术表现&…...
vscode配置conda虚拟环境【windows系统】
安装好anacondavscode里安装python插件 3.点击左侧插件 如图1,再2,再点击3小星星激活conda环境 最后下方栏就出现conda环境了。就可以用啦...
OpenClaw任务监控:gemma-3-12b-it执行状态实时查看技巧
OpenClaw任务监控:gemma-3-12b-it执行状态实时查看技巧 1. 为什么需要实时监控OpenClaw任务 当我第一次在本地部署OpenClaw对接gemma-3-12b-it模型时,最让我头疼的就是无法直观了解任务执行状态。有一次让AI助手帮我整理季度报告,等了半小时…...
PyTorch与torchvision版本兼容性全解析:从安装到升级的避坑指南
1. PyTorch与torchvision版本兼容性基础 刚接触深度学习框架时,我最先踩的坑就是PyTorch和torchvision版本不匹配。明明按照教程安装了最新版,运行时却报出各种奇怪的错误,后来才发现是这两个库的版本没对齐。这就像买手机时充电器和数据线必…...
OpenClaw跨平台控制:Qwen3-32B同步操作多台设备的配置方法
OpenClaw跨平台控制:Qwen3-32B同步操作多台设备的配置方法 1. 为什么需要分布式OpenClaw控制? 去年冬天,当我需要在三台不同操作系统的设备上同步执行数据清洗任务时,第一次意识到单机OpenClaw的局限性。每台设备需要单独登录、…...
要使用vue脚手架来创建一个项目的步骤
1、安装node.js 1.1、node.js的作用: 1.1.1、自带包管理器 node.js是npm和yarn的运行环境,没有node.js就运行不了npm命令和yarn命令。 (1)npm是官方的,node.js自带的,负责下载,安…...
微信聊天记录如何实现本地永久备份?开源工具WeChatMsg守护你的数字资产
微信聊天记录如何实现本地永久备份?开源工具WeChatMsg守护你的数字资产 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_T…...
KXTJ3-1057运动检测库:嵌入式低功耗加速度计工程实践
1. KXTJ3-1057运动检测库深度解析:面向嵌入式系统的低功耗MEMS加速度计工程实践1.1 芯片级硬件特性与系统定位KXTJ3-1057是罗姆(ROHM)推出的超低功耗三轴MEMS加速度计,其核心价值不在于参数堆砌,而在于“运动检测无冗余…...
AI Agent Harness Engineering 的记忆架构:短期、长期与情景记忆的工程实现
AI Agent Harness Engineering 的记忆架构:短期、长期与情景记忆的工程实现 副标题:构建具有类人记忆能力的智能代理系统完整指南 第一部分:引言与基础 (Introduction & Foundation) 1. 引人注目的标题 (Compelling Title) “AI Agent Harness Engineering 的记忆架构…...
Sodaq_R4X库详解:SARA-R4蜂窝模组嵌入式通信框架
1. Sodaq_R4X库深度解析:面向SARA-R4系列蜂窝模组的嵌入式通信框架1.1 库定位与工程价值Sodaq_R4X是一个专为u-blox SARA-R4系列蜂窝通信模组设计的Arduino兼容C库,其核心目标是将复杂的LTE-M(eMTC)、NB-IoT及2G(仅R41…...
终极团队协作利器:Synthwave ‘84主题如何实现多人开发环境一致性
终极团队协作利器:Synthwave 84主题如何实现多人开发环境一致性 【免费下载链接】synthwave-vscode Synthwave inspired colour theme for VS Code 🌅🕶 项目地址: https://gitcode.com/gh_mirrors/sy/synthwave-vscode 在现代软件开…...
终极指南:如何为NSFWJS集成Sentry实现高效错误监控与异常跟踪
终极指南:如何为NSFWJS集成Sentry实现高效错误监控与异常跟踪 【免费下载链接】nsfwjs NSFW detection on the client-side via TensorFlow.js 项目地址: https://gitcode.com/gh_mirrors/ns/nsfwjs NSFWJS是一个基于TensorFlow.js的客户端不良内容检测库&am…...
