前言

antd官网例子上默认是点击checkbox或者radio才会选中,这对体验上来说有点不太方便,所以需求是要做成点击Table的整行直接触发选中。

其实官方也有给了个例子:codesandbox.io/s/000vqw38r…,这是使用class写的checkbox框。

但是我项目是使用hooks的,而且是个radio框,所以就自己写了个

实现

这个其实没啥好多说的,直接看代码好了

 1import React, { useState } from 'react' 
 2import { Table } from 'antd';
 3const AddrList = (props) => {   
 4  //const [selectedRows, setSelectedRows] = useState([])
 5  const [selectedRowKeys, setSelectedRowKeys] = useState([])  
 6  const onSelectChange = (selectedRowKeys, selectedRows) => {     
 7    //setSelectedRows(selectedRows)     
 8    setSelectedRowKeys(selectedRowKeys)   }   
 9  const rowSelection = {     
10    type: 'radio',    
11    selectedRowKeys,    
12    onChange: onSelectChange  
13  }     // 点击整行选择  
14  const onSelectRow = (record) => {  
15    const selectedList = [...selectedRowKeys]
16    if (selectedList[0] === record.id) return     selectedList[0] = record.id     //setSelectedRows([record])   
17    setSelectedRowKeys(selectedList)   
18  }     return (    
19    <Table          
20      rowKey={(row) => row.id}      
21      columns={columns}         
22      dataSource={list}         
23      rowSelection={rowSelection}      
24      onRow={(record) => ({         
25        onClick: () => onSelectRow(record)     
26      })}       
27      />   
28  )
29}

完事~

个人笔记记录 2021 ~ 2025