当前位置: 首页 > news >正文

【Antd】实现Table组件行点击,解决某一列不触发行点击

今天有个新需求,点击table行,执行一些操作。实现过程中遇到了:点击操作列、操作列内按钮会冒泡触发行点击。antd版本:1.7.8

一、解决方案 customRow

<a-table :customRow="handleClickRow" :data-source="data_list" :columns="columns" bordered rowKey="id" :scroll="{x:true}"><template slot="operation" slot-scope="text, record"><div><a @click.stop="handleAdd('edit', record)"> //阻止冒泡<a-icon type="edit" />编辑</a><a-popconfirm title="确认删除吗?" @confirm="onDelete(record)"><a @click.stop=""><a-icon type="delete" />删除</a></a-popconfirm><a @click.stop="handleAdd('look', record)"><a-icon type="eye" />查看</a></div></template>
</a-table>
methods: {//行点击handleClickRow(record, index){return {on: {click: () => { //行单击console.log(record, index)}}}},
}

 事件汇总:

1、click 行单击

2、dblclick 行双击

3、contextmenu 右键菜单

4、mouseenter 鼠标移入

5、mouseleave 鼠标移出

事件冒泡:

上面解决方案的bug是:点击操作栏、操作栏内的按钮,都会触发事件冒泡致行点击。所以我在每一个按钮的点击事件上都加了阻止事件冒泡 .stop。

还有一点值得注意的是 popconfirm 组件,默认点击 删除按钮会弹框,所以我加了 @click.stop="" 。

以上的解决方案,可以正常点击操作栏按钮,点击操作栏仍会触发行点击事件,如果觉得没有影响就可以到此为止。如果想要点击操作栏不触发行点击,解决方案在下方。

二、如何点击操作栏不触发行点击

固定列 fixed: true

//行点击handleClickRow(record, index){return {on: {click: (event) => {const rowElement = event.target.closest("tr");const lastCellElement = rowElement.lastElementChild;const clickedCellElement = event.target.closest("td");const isLastColumn = clickedCellElement === lastCellElement;if (!isLastColumn) { //当点击表格最后一列时,不触发行点击console.log(recore, index)}}}}},

不固定列

    //行点击handleClickRow(record, index){return {on: {click: (event) => {const lastColumnIndex = this.columns.length - 1;const isLastColumn = event.target.cellIndex === lastColumnIndex;if (!isLastColumn) {this.handleAdd('look', record) }}}}},

以上。

如果我的博客解决了您的问题,欢迎评论、点赞、关注,一起讨论~

 

http://www.lryc.cn/news/124936.html

相关文章:

  • Kafka3.0.0版本——Broker( 退役旧节点)示例
  • 【Rust】Rust学习 第十二章一个 I/O 项目:构建一个命令行程序
  • 【MySQL--->表的操作】
  • PyTorch从零开始实现ResNet
  • 企业微信 企业内部开发 学习笔记
  • 03 QT基本控件和功能类
  • epoll数据结构
  • LINUX学习笔记_GIT操作命令
  • 第一百二十九天学习记录:数据结构与算法基础:栈和队列(中)(王卓教学视频)
  • C语言 — qsort 函数
  • 开放式耳机哪个好一点?推荐几款优秀的开放式耳机
  • vue-cli前端工程化——创建vue-cli工程 router版本的创建 目录结构 案例初步
  • Go和Java实现外观模式
  • 人工智能(一)基本概念
  • 〔AI 绘画〕Stable Diffusion 之 解决绘制多人或面部很小的人物时面部崩坏问题 篇
  • 初步认识OSI/TCP/IP一(第三十八课)
  • 英伟达结构化剪枝工具Nvidia Apex Automatic Sparsity [ASP](2)——代码分析
  • FileNotFoundError: [WinError 2] 系统找不到指定的文件。
  • Linux: sysctl:net: IPV4_DEVCONF_ALL ignore_routes_with_linkdown; all vs default
  • 光耦继电器:实现电气隔离的卓越选择
  • 鸿蒙开发学习笔记2——实现页面之间跳转
  • 电子商务类网站需要什么配置的服务器?
  • table 根据窗口缩放,自适应
  • 应急响应-Webshell
  • 【调整奇数偶数顺序】
  • Linux(Ubuntu)系统临时IP以及静态IP配置(关闭、启动网卡等操作)
  • 2023-08-11 LeetCode每日一题(矩阵对角线元素的和)
  • Github 80 个键盘快捷键和一些搜索技巧的备忘清单
  • 神经网络基础-神经网络补充概念-08-逻辑回归中的梯度下降算法
  • npm ERR! cb.apply is not a function