zoukankan      html  css  js  c++  java
  • antd table 点击行触发radio 或 checkbox

     UIStore.ts (使用mobx) 1 import { observable, action, computed } from 'mobx'

     2  export class UIStore {
     3  @observable public selectedRowKeys: string[] = [] // 单选 选中的key
     4  @action
     5   public onSelectedRowKeysChange = (selectedRowKeys: string[]) => {
     6     this.selectedRowKeys = selectedRowKeys
        // do something 这里可以触发点击单选按钮选择数据
    7 } 8
        // 保证单选,即数组里只有一个key 9 @action 10 public rowRadioSelected = (record: IOptions) => { 11 if (!this.selectedRowKeys.length) { 12 this.selectedRowKeys.push(record['key']) 13 } else { 14 if (this.selectedRowKeys.indexOf(record['key']) === -1) { 15 this.selectedRowKeys.splice(0, 1, record['key']) 16 } 17 } 18  } 19 } 20  export default new UIStore()
    test.tsx
     1 import * as React from 'react'
     2 import { observer } from 'mobx-react'
     3 import UIStore from './UIStore'
     4  
     5 @observer
     6 export default class Test extends React.Component {
     7   const columns = [{
     8   title: 'Name',
     9   dataIndex: 'name',
    10   render: text => <a href="#">{text}</a>,
    11   }, {
    12   title: 'Age',
    13   dataIndex: 'age',
    14   }, {
    15   title: 'Address',
    16   dataIndex: 'address',
    17   }]
    18  
    19   const data = [{
    20   key: '1',
    21   name: 'John Brown',
    22   age: 32,
    23   address: 'New York No. 1 Lake Park',
    24   }, {
    25   key: '2',
    26   name: 'Jim Green',
    27   age: 42,
    28   address: 'London No. 1 Lake Park',
    29   }, {
    30   key: '3',
    31   name: 'Joe Black',
    32   age: 32,
    33   address: 'Sidney No. 1 Lake Park',
    34   }, {
    35   key: '4',
    36   name: 'Disabled User',
    37   age: 99,
    38   address: 'Sidney No. 1 Lake Park',  
    39  }]
    40  
    41  render () {
    42   
    43    const rowRadioSelection: TableRowSelection<IOptions> = {  // IOptions 是每行数据的类型
    44      type: 'radio',
    45      selectedRowKeys: toJS(UIStore.selectedRowKeys), 
    46      onChange: UIStore.onSelectedRowKeysChange,
    47     }
    48   return (
    49   <Table 
    50   rowKey={(_, i) => `${i}`}
    51   columns={columns}
    52   dataSource={data}
    53    rowSelection={rowRadioSelection}
    54     onRow={record => {
    55       return {
    56         onClick: () => {
    57        UIStore.rowRadioSelected(record)
    58       },
    59      }
    60       }
    61    }
    62  />
    63 )}
    64 }
    
    
     

    参考: https://codesandbox.io/s/000vqw38rl

  • 相关阅读:
    roundabout插件使用(3d旋转轮播图)兼容IE8
    css实现定高的元素在不定高的容器中水平垂直居中(兼容IE8及以上)
    jq点击小图 弹出大图(更新版)
    pc端页面在移动端显示问题
    swiper横向轮播--3d
    swiper横向轮播(兼容IE8)
    windows 7安装apache
    从SDP中至少要看到那些东西?
    FS拓展设置
    Freeswitch 入门
  • 原文地址:https://www.cnblogs.com/aloehui/p/10178396.html
Copyright © 2011-2022 走看看