antdsign Table—嵌套子表格

解决通过ajax请求的数据嵌套子表格展开显示时,无法独立显示。

      最近有写一个嵌套子表格的项目,主要是根据表格行的信息获取该行下级的详细信息并最为表格输出展示。第一种情况展开的子表格没有自己的state完全根据props去获取自己的数据并展示。
 const expandedRowRender = (record, index, indent, expanded) => {const columns = [  ];//ajax获取dataconst data = [];return <Table columns={columns} dataSource={data} pagination={false} />;};

expandedRowRender 根据这个函数获取当前展开行的信息,从而去请求数据展示,各个展开的子表格不会有影响,但如果分页信息或者数据,是以当前组件的state存储时就会有问题。展开一行获取数据时其他被展开的子表格的信息也会被修改,因为这些表格是共用的一个状态,有三种解决办法,
其一: 网上有的解决办法这里就不多说了直接上链接
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z3y3m3/article/details/86602192
————————————————
版权声明:本文为CSDN博主「z3y3m3」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/z3y3m3/article/details/86602192
其二: 同时只允许一行展开,但这样会限制需求,也不讨论
其三: 将子表格作为一个单独的组件抽离出来拥有自己的状态,这样每个子表格就不会相互影响
贴代码
父组件

import React, { Component } from 'react'
import { Table, Icon, Spin, Tooltip } from 'fish'
import request from '@ae.sdp.nd/core/shared/request'
// import { env } from '~/constants'
import moment from 'moment'
import ExpandTable from './ExpandTable'export default class ComponentParticles extends Component {constructor (props) {super(props)this.state = {app_id: '',date: this.props.date,searchData: { // 表格数据查询参数    current: 1,columnKey: 'sum_date',order: 'asc',pageSize: 10},data: [],total: 0,loading: false}this.columns = []}componentWillReceiveProps (nextProps) {if (nextProps.date[0].valueOf() !== this.props.date[0].valueOf() || nextProps.date[1].valueOf() !== this.props.date[1].valueOf() || nextProps.clickedComp !== this.props.clickedComp) {this.getData(nextProps.date, nextProps.clickedComp)}}componentDidMount () {this.getData(this.props.date, this.props.clickedComp)}getData (date, clickedComp) {this.setState({ loading: true })const config = {}request(config).then(res => {const data = []res.items.map(item => {data.push({...item,key: item.app_id})})this.setState({data,total: res.total,loading: false})})}expandedRowRender = (expandedRows) => {return <ExpandTable date={this.props.date} record={expandedRows} />}onTableChange = (page, filter, sorter) => {this.setState({searchData: {current: page.current,columnKey: sorter.columnKey,order: sorter.order === 'ascend' ? 'asc' : 'desc',pageSize: page.pageSize}}, () => {this.getData(this.props.date, this.props.clickedComp)})}render () {const paginationProps = {current: this.state.searchData.current,defaultPageSize: this.state.searchData.pageSize,total: this.state.total}return (<Spin tip='加载中...' spinning={this.state.loading}><div className='Modal'><Tablecolumns={this.columns}expandedRowRender={this.expandedRowRender}onChange={this.onTableChange}pagination={paginationProps}dataSource={this.state.data} /></div></Spin>)}
}

子组件 ExpandTable

import React, { Component } from 'react'
import { Table, Spin } from 'fish'
import request from '@ae.sdp.nd/core/shared/request'
// import { env } from '~/constants'
import moment from 'moment'export default class ComponentParticles extends Component {constructor (props) {super(props)this.state = {searchData: { // 表格数据查询参数current: 1,columnKey: 'sum_date',order: 'asc',pageSize: 10},data: [],total: 0,loading: false}this.columns = []}componentWillReceiveProps (nextProps) {if (nextProps.record !== this.props.record) {this.getData(nextProps.date, nextProps.record)}}componentDidMount () {this.getData(this.props.date, this.props.record)}getData = (date, record) => {this.setState({ loading: true })const config = {}request(config).then(res => {const data = []res.items.map((item, index) => {data.push({...item,key: index + this.props.record.app_id})})this.setState({data,total: res.total,loading: false})})}onTableChange = (page, filter, sorter) => {this.setState({searchData: {current: page.current,columnKey: sorter.columnKey,order: sorter.order === 'ascend' ? 'asc' : 'desc',pageSize: page.pageSize}}, () => {this.getData(this.props.date, this.props.record)})}render () {const paginationProps = {current: this.state.searchData.current,defaultPageSize: this.state.searchData.pageSize,total: this.state.total}return (<Spin tip='加载中...' spinning={this.state.loading}><div className='Modal'><Tablecolumns={this.columns}onChange={this.onTableChange}pagination={paginationProps}dataSource={this.state.data} /></div></Spin>)}
}

这里代码是根据我运行的改成的伪代码并不能运行,借鉴一下就好
第一次写文章,如有不足,多多包涵

版权所有,翻版必究哦!哈哈哈哈哈哈哈

antd 嵌套子表格相关推荐

  1. antd 嵌套子表格_大型前端项目架构优化探索之路腾讯文档表格

    腾讯文档表格是一个非常复杂的业务,它实现了传统 excel 的大部分核心功能,包括函数计算.条件格式.图表.智能分列等:除此之外还支持高效的多人协同编辑:它的代码量百万级别,启动也流程多达十几步.在前 ...

  2. antd react table 嵌套子表格例子

    antd react table 嵌套子表格例子 import { Button, TableColumnsType } from 'antd'; import { Badge, Dropdown, ...

  3. 怎么才能让Antd中的嵌套子表格渲染不一样的内容

    目录 一.子表格与父表格的数据存储在一起 方式一:Function(record, index, indent, expanded):VNode 方式二:#expandedRowRender=&quo ...

  4. AntDesignVue中Table表格嵌套子表格expandedRowRender插槽用法

    在一次项目中使用antdVue表格嵌套子表格时,出现了父表格下子表格数据覆盖的情况,错误情况就不复现了,直接上正确代码 需求:根据父表格id来获取子表格数据 还是说下错误的情况吧,这个时候可以正常取到 ...

  5. Vue + ant design 实现嵌套子表格

    Table - 嵌套子表格 一.效果展示 二.代码实现 一.效果展示 功能1:添加主表格一行 功能2:添加某个子表格一行 功能3:子表格数据的异步加载 二.代码实现 <template>& ...

  6. 树形数据展示 - 嵌套子表格

    一.目标样式 父表格嵌套子表格,子表格默认折叠,点击父表格左侧加号可以展开父表格显示对应的子表格,展示每行数据更详细的信息 目标效果 二.问题样式 (一)问题说明 父表格展开后,子表格展示成功,但是子 ...

  7. ant-design嵌套子表格实现每次只展开一个子表格(点击新的子表格收起原展开的子表格)

    又遇到问题,记录一下吧,希望给同踩坑的小白一些帮助 首先功能需求:点击新的子表格收起原展开的子表格 解决问题的关键点:重新set  expandedRowKeys的值 这个解决问题的点大家都能想到,主 ...

  8. ant里面table嵌套子表格_ElementUI el-table行内编辑验证,动态增减行

    通过el-from验证动态表格的行内输入 eltable动态增加行或者删除行只需要控制对应的数组就可以实现,行内的验证可以使用el-form的表单验 证,直接上代码: el-form嵌套table f ...

  9. 自定义antd table子表格的展开和收起,一键展开收起

    效果: 代码: import React from 'react'; import {Table} from 'antd'; const key = []; // 定义一个空的数组. export d ...

最新文章

  1. 多进程的一些注意事项
  2. python包与模块导入
  3. 请收拾起忧伤,难过,不快,好好过日子。
  4. python12个基本语法_12-25python基本语法
  5. MySQL的复制:MySQL系列之十三
  6. java用scanner 和random的一个小案例
  7. java 1.8stream_java jdk1.8 使用stream流进行list 分组归类操作
  8. pytorch初试:CNN实现
  9. 国外公司技术博客盘点
  10. Zookeeper java客户端ZkClient使用详解
  11. 排序算法(5)----堆排序
  12. TextView实现歌词同步《IT蓝豹》
  13. Linux安装日文语言包,以及,TeraTerm显示乱码问题 的 解决
  14. Win10 安装 Ubuntu 使用 Linux 教程
  15. 2012 r2 万能网卡驱动_MultiBeast | 黑苹果的驱动精灵简单使用解读
  16. ACM中国国家集训队论文集目录(1999-2009)
  17. 深富策略市场情绪明显回暖
  18. lpl夏季赛2021赛程表出炉,用当贝投影F3百吋大屏看比赛!
  19. LabVIEW控制Arduino实现RGB调色灯(基础篇—6)
  20. HDMI2.0RE驱动控制方案AG7120和AG7220性能参数对比

热门文章

  1. Linux运维怎么从月薪2k做到年薪50w?
  2. apriori java_频繁模式挖掘apriori算法介绍及Java实现
  3. 计算机用户名密码不知道了怎么改,电脑系统账号administrator设置了密码,密码忘记了怎么办?...
  4. C语言整人的无限循环,让对方电脑自动关机的整人程序和无限循环程序-win7自动关机软件...
  5. rj45 千兆接口定义_RJ45接口针脚定义(各种接口针脚定义)
  6. FFmpeg 时间单位与转换
  7. 【Android 10 源码】healthd 模块 HAL 2.0 分析
  8. csv是什么意思中文_CSV是什么-名词解释
  9. c语言顺时针打印数组,顺时针打印数组
  10. 中南民族大学计算机图像处理实验报告,中南民族大学数字图像处理实验报告.docx...