Ant Design of Vue 表格数据 重复渲染

Ant Design of Vue 表格数据 重复渲染

初次使用Ant Design of Vue 框架遇到表格数据重复渲染的解决办法
重要的都标注了
就是这样的表格
在这里插入图片描述

// 组件
<a-table
	:columns="columns"
	:data-source="mainDatas"
	class="components-table-demo-nested"
	bordered
	:pagination="pagination"
	@expand="clickExpand"  // 展开图标触发
	:expandedRowKeys="expandedRowKeys"   // 展开的行控制属性
	>
	<a-table
	  slot="expandedRowRender"
	  :columns="innerColumns"
	  :data-source="innerData"
	  :pagination="false"
	>
	</a-table>
</a-table>
// data
data() {
	return{
	  expandedRowKeys: [],
      mainDatas: [],
      innerData: [],
      }
   }
 // methods
 clickExpand(expanded, record) {
 // 点击展开图标时触发的函数
 
      if (expanded) {
        // 解决框架表格数据受污染
        this.expandedRowKeys = []
        this.expandedRowKeys.push(record.key)  // 加入当前展开的索引值
      } else {
        this.expandedRowKeys = []
      }

      this.innerData = []
      requestData({ }).then((res) => {
      // 获取请求数据
        let data = res
        data.forEach((e, i) => {
          this.innerData.push({
            key: i,
          })
        this.innerData =  Array.from(new Set(this.innerData)) // 数组去重
        })
      })
    },
  1. 其实本质就是控制expandedRowKeys这个数组里面的加的索引值,有哪个索引值就展开哪个,多个就展开多个。
  2. 自己总结的一些方法,欢迎指出不足,初用该框架,避坑。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ant Design of Vue 提供了一个`<a-table>`组件,可以用来展示和操作表格数据。在这个组件中,合并单元格需要使用`customRow`属性,结合自定义的方法来实现。 具体步骤如下: 1. 定义表格数据源: ```js data() { return { dataSource: [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', children: [ { name: 'Lucy Brown', age: 6 }, { name: 'Tom Brown', age: 4 }, ], }, { key: '2', name: 'Joe Black', age: 42, address: 'London No. 1 Lake Park', children: [ { name: 'Jim Black', age: 6 }, ], }, { key: '3', name: 'Jim Green', age: 32, address: 'Sidney No. 1 Lake Park', children: [], }, ], }; }, ``` 2. 定义表格列的配置项: ```js columns: [ { title: 'Name', dataIndex: 'name', key: 'name', customRow(row, index) { const { dataSource } = this; const { children } = dataSource[index]; const rowSpan = children.length + 1; return { props: { rowSpan } }; }, }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, { title: 'Children', dataIndex: 'children', key: 'children', slots: { customRender: 'children' }, }, ], ``` 在上面的配置项中,`customRow`属性定义了如何合并单元格。具体来说,它会在渲染每一行数据时调用,传入两个参数:`row`表示当前行的数据,`index`表示当前行的索引。在方法体内,我们可以通过`this.dataSource`获取表格数据源,从而计算出当前行的`rowSpan`值,即合并的行数。 3. 在表格使用自定义的列配置项: ```html <a-table :columns="columns" :data-source="dataSource"> <template #children="{ text }"> <span v-for="child in text" :key="child.name"> {{ child.name }} <a-divider type="vertical" /> {{ child.age }} </span> </template> </a-table> ``` 在上面的代码中,我们使用`<template>`标签来定义自定义的列渲染方式。其中,`#children`表示渲染`children`列,并传入`{ text }`作为参数,`text`表示当前行的`children`属性。在模板内容中,我们可以通过`v-for`来遍历`children`数组,渲染出每个子元素的信息。 以上就是使用 Ant Design of Vue 实现合并表格的方法。需要注意的是,如果表格数据源中有嵌套的数组,我们需要在自定义的列渲染方式中进行特殊处理,以展示嵌套数据的信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值