antd中table组件选中单行换样式(比如背景颜色)

今天项目中有一个需求,点击某一行后,将改行的背景颜色换掉,换成一个比较醒目的颜色。
首先看了看官方,官方还是比较可爱可亲的,都给我们准备好了,
在这里插入图片描述

onRow 用法

适用于 onRow onHeaderRow onCell onHeaderCell

<Table
  onRow={record => {
    return {
      onClick: event => {}, // 点击行
      onDoubleClick: event => {},
      onContextMenu: event => {},
      onMouseEnter: event => {}, // 鼠标移入行
      onMouseLeave: event => {},
    };
  }}
  onHeaderRow={(columns, index) => {
    return {
      onClick: () => {}, // 点击表头行
    };
  }}
/>

很明显 这个属性对应的是一个回调函数,这个回调函数是有两个参数的,第一个参数是当前行的信息,第二个参数是当前行在table数组中的下标index
在这里插入图片描述
我们这俩主要数onClick这个事件,当我们给onRow赋值为一个回调函数之后,回调函数会执行,返回一个对象

{
      onClick: event => {}, // 点击行
      onDoubleClick: event => {},
      onContextMenu: event => {},
      onMouseEnter: event => {}, // 鼠标移入行
      onMouseLeave: event => {},
    }

当我们单击的时候执行onClick;
后面四个分别是鼠标双击、鼠标右键、鼠标移入和鼠标移出;
我们这俩将onClick后面换成自己的自定义事件

上代码;

 <AAATable
         size={'default'}
         columns={columnsThird} //表格的列
         dataSource={dataTableThird} //表格渲染的数据
         title={'INCLUDE列表'} //表格的名字
         onChange={this.onChangeTableThird} //可以固定使用
         total={totalThird}
         pageSize={pageSizeThird}
         current={currentPageThird}
         showTotal={true}
         rowClassName={this.rowClassNameFun}
         onRow={
              (record, index) => {
                  return {
                      onClick: _ => { this.zjq(record, index) }, // 点击行
                          };
              }}
 />

我们在zjq这个函数中能获取到当前点击的行内容和行下标;

    zjq = (rowItem, index) => {
        console.log("LiuQing")
        this.setState({
            index
        })
    }

我们在状态机中存储一下index,用于判断哪个下标显示突出的背景颜色

	state={
		index:""
	}

rowClassName
下面就该说table的另一个属性了行类名rowClassName,这个属性对应的也是一个函数,这个函数的默认两个参数同样是当前行内容和当前行下标,返回值为string也就是我们的类名即可。
我们可以使用index完美的得到哪一行被点击了
在这里插入图片描述

	rowClassName={this.rowClassNameFun}
    rowClassNameFun = (record, index) => {
        console.log(record, index, "rowClassNameFun")
        if (index === this.state.index)
            return 'mySelfClassName'
    }

最后就是引入样式文件

	import './index.less'
	.mySelfClassName{
  	  background-color: red;
	}

在这里插入图片描述

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
antdTable组件默认不支持点击交顺序,需要自己实现。 以下是一个简单的示例代码,实现了点击表格行交顺序的功能: ```jsx import React, { useState } from 'react'; import { Table } from 'antd'; const data = [ { id: 1, name: 'John Doe' }, { id: 2, name: 'Jane Doe' }, { id: 3, name: 'Bob Smith' }, { id: 4, name: 'Alice Lee' }, ]; const columns = [ { title: 'ID', dataIndex: 'id', key: 'id' }, { title: 'Name', dataIndex: 'name', key: 'name' }, ]; const MyTable = () => { const [dataSource, setDataSource] = useState(data); const handleRowClick = (record, index) => { if (index > 0) { const newData = [...dataSource]; newData[index] = dataSource[index - 1]; newData[index - 1] = record; setDataSource(newData); } }; return <Table dataSource={dataSource} columns={columns} onRow={(record, index) => ({ onClick: () => handleRowClick(record, index) })} />; }; export default MyTable; ``` 在上面的代码,我们定义了一个data数组作为表格数据源,然后通过useState创建了一个dataSource状态,用于保存表格数据。 在handleRowClick函数,我们根据点击的行的index判断是否需要交顺序,如果index大于0,则交当前行和上一行的数据。最后使用setDataSource更新数据源。 在Table组件,我们将onRow属性设置为一个函数,用于绑定行点击事件。在这个函数,我们调用handleRowClick函数,并将当前行的record和index作为参数传递进去。 最终实现的效果是,当用户点击表格的一行时,如果不是第一行,则会将当前行和上一行的数据交顺序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值