首页 > 其他分享 >【React+Antd】 可展开Table

【React+Antd】 可展开Table

时间:2023-05-17 12:44:19浏览次数:39  
标签:Table name No Park React record expandedRowKeys address Antd

在antd基础上进行改造,抛弃之前的靠前面+进行展开的方式,在操作列进行点击展开

 

 

import { Table } from 'antd';
import React,{useState} from 'react';
import 'antd/dist/antd.css';
import './index.css';
const   APP=()=> {
  const [expandedRowKeys,sexpandedRowKeys]=useState ([]),
  const open = (record) => {
    let expandedRowKey = JSON.parse(
      JSON.stringify(expandedRowKeys)
    ); //一定要深拷贝 不然数组更改视图不更新
    let spliceIndex = expandedRowKey.findIndex((item) => record.id === item);
    if (spliceIndex > -1) {
      expandedRowKey.splice(spliceIndex, 1);
    } else {
      expandedRowKey.push(record.id);
    }
      sexpandedRowKeys(expandedRowKey);
      console.log("expandedRowKeys", expandedRowKeys)
  };
  // render() {
    const columns = [
      { title: 'Name', dataIndex: 'name', key: 'name' },
      { title: 'Age', dataIndex: 'age', key: 'age' },
      { title: 'Address', dataIndex: 'address', key: 'address' },
      {
        title: 'Action',
        dataIndex: '',
        key: 'x',
        render: (record) => <a onClick={() => {open(record)}}>展开</a>,
      },
    ];
    const data = [
      {
        id: 1,
        name: 'John Brown',
        age: 32,
        address: 'New York No. 1 Lake Park',
        description:
          'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.',
      },
      {
        id: 2,
        name: 'Jim Green',
        age: 42,
        address: 'London No. 1 Lake Park',
        description:
          'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.',
      },
      {
        id: 3,
        name: 'Joe Black',
        age: 32,
        address: 'Sidney No. 1 Lake Park',
        description:
          'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.',
      },
    ];
    return (
      <div>
        <Table
          columns={columns}
          rowKey={(record) => record.id}
          expandable={{
            expandedRowRender: (record) => (
              <p style={{ margin: 0 }}>{record.address}</p>
            ), //展开行渲染内容
            rowExpandable: (record) => (record.address ? true : false), //全部开启展开属性
            expandIconColumnIndex: -1, //隐藏默认的加号
            //expandIconAsCell: false,
          }}
          dataSource={data}
          expandedRowKeys={expandedRowKeys}
        />
      </div>
    );
  // }
}
export default APP

 

标签:Table,name,No,Park,React,record,expandedRowKeys,address,Antd
From: https://www.cnblogs.com/Esai-Z/p/17408286.html

相关文章

  • 【React】定时器组件
    鼠标移入关闭定时器并清除,鼠标移出组件的时候打开定时器进行循环consttimer=useRef(null);useEffect(()=>{startLoop();},[]);conststartLoop=()=>{stopLoop();timer.current=window.setInterval(()=>{//要干的事},60*......
  • 【Antd】表格超出隐藏,显示三点,触碰提示
    clumns行设置:1onCell:()=>{2return{3style:{4overflow:'hidden',//控制隐藏5whiteSpace:'nowrap',//控制换行6textO......
  • 【Antd】表单调整输入框对齐方式:
    constformItemLayout={labelCol:{//左边文字xs:{span:24},sm:{span:6},},wrapperCol:{//右边输入框xs:{span:24},sm:{span:16},},};consttailFormItemLayout={wrapperCol:{xs......
  • 记录内网Docker启动Stable-Diffusion遇到的几个坑
    摘要:最近看到K8s启动stable-diffusion的文章,想着在自己开发环境复现一下。没想到在内网环境还遇到这么多问题,记录一下。本文分享自华为云社区《内网Docker启动Stable-Diffusion(AI作画)》,作者:tsjsdbd。最近看到K8s启动stable-diffusion的文章,想着在自己开发环境复现一下。没想到......
  • Row size too large. The maximum row size for the used table type, not counting B
    问题描述新建表或者修改表varchar字段长度的时候,出现这个错误Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.Thisincludesstorageoverhead,checkthemanual.YouhavetochangesomecolumnstoTEXTorBLOBs......
  • ReactNative 配置路径别名
    1、安装依赖 babel-plugin-module-resolveryarnaddbabel-plugin-module-resolver-D 2、配置babel.config.jsmodule.exports={presets:['module:metro-react-native-babel-preset'],plugins:[['@babel/plugin-proposal-decorators......
  • AntDeisgn中checkbox group的使用
    <template><!--弹窗类型选择--><div><a-modal:visible="state.modalAttr.visible"title="规选类型"width="680px"@ok="showModal"@cancel="hideModal"><a-checkbox......
  • Vue、React和小程序都是流行的前端开发框架/平台
    Vue、React和小程序都是流行的前端开发框架/平台,它们各有优缺点。Vue的优点:简单易学:Vue的语法简单明了,易于理解和学习。渐进式框架:Vue可以逐渐地集成到现有项目中,也可以作为完整的单页应用程序开发。响应式设计:Vue的响应式设计使得数据变化后UI自动更新,方便快捷。高......
  • vue contenteditable处理火狐浏览器复制带标签问题
    this.$refs.materialTxt.addEventListener('paste',function(e){console.log('监听到了')e.stopPropagation()e.preventDefault()lettext='';constevent=(e.originalEvent||e)if(event.c......
  • React-hooks 父组件通过ref获取子组件数据和方法
    我们知道,对于子组件或者节点,如果是class类,存在实例,可以通过React.createRef()挂载到节点或者组件上,然后通过this获取到该节点或组件。classRefTestextendsReact.Component{constructor(props){super(props);this.myRef=React.createRef();}......