react Ant Design 动态表头添加操作列

模拟后端返回的表头、列表数据


 

 

注意:我们要在表头数据中添加一个 render 函数,里面就是你操作列的内容,value是你数据列表每行的对象 ,item 是你表头的对象

 页面中去处理这个两个数组

   dataList.forEach((item, index) => {
      item.operationList = arr;// arr = ['编辑','删除']
    });
arr 数组中的数据好像只支持这样格式,也可能是我没研究透
columns.forEach((item, index) => {
      if (item.key === "operation") {
        item.render = (_, value) => (
          <div style={{ display: "flex", justifyContent:'space-around' }}>
            {value.operationList.map((i) => {
              return (
                <Button
                  type="primary"
                  key={i}
                  // 操作列的按钮事件
                  onClick={() => {
                    // i  是操作按钮
                    // value 是每行的数据
                    // item 是表头对象
                    operationEvent(i, value, item);
                  }}>
                  {i}
                </Button>
              );
            })}
          </div>
        );
      }
});


const operationEvent = (i, value, item) => {
    switch (i) {
      case "编辑":
        compileData(i, value, item);
        break;
      case "删除":
        delData(i, value, item);
        break;
    }
  };

html

import React, { useEffect } from "react";
import { Table, Button, message } from "antd";


 
 <Table columns={columns} dataSource={dataList} />

我们的需求是动态表单,表头也是后端返回的数据进行渲染

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Ant Design Vue 表格的动态表头可以通过以下步骤实现: 1. 定义表格的数组,其中每个对象包含 `title` 属性和 `key` 属性,如下所示: ``` columns: [ { title: '姓名', key: 'name' }, { title: '年龄', key: 'age' }, // 其他 ] ``` 2. 定义动态表头的数组,其中每个表头对象包含 `label` 属性和 `children` 属性,如下所示: ``` headerList: [ { label: '基本信息', children: [ { label: '姓名', key: 'name' }, { label: '年龄', key: 'age' }, // 其他 ] }, { label: '扩展信息', children: [ { label: '职业', key: 'job' }, { label: '工作经验', key: 'experience' }, // 其他 ] }, // 其他表头 ] ``` 3. 在表格组件中使用 `v-for` 循环渲染表头,如下所示: ``` <template> <a-table :columns="tableColumns" :data-source="tableData"> <template #title> <span>{{ tableTitle }}</span> <a-divider /> <a-table-header :columns="headerColumns" /> </template> <!-- 其他表格内容 --> </a-table> </template> <script> export default { data() { return { columns: [ { title: '姓名', key: 'name' }, { title: '年龄', key: 'age' }, // 其他 ], headerList: [ { label: '基本信息', children: [ { label: '姓名', key: 'name' }, { label: '年龄', key: 'age' }, // 其他 ] }, { label: '扩展信息', children: [ { label: '职业', key: 'job' }, { label: '工作经验', key: 'experience' }, // 其他 ] }, // 其他表头 ] } }, computed: { tableColumns() { return this.columns.filter(item => { return this.headerList.some(header => { return header.children.some(child => { return child.key === item.key }) }) }) }, headerColumns() { return this.headerList.map(header => { return { title: header.label, children: this.columns.filter(item => { return header.children.some(child => { return child.key === item.key }) }) } }) } }, // 其他代码 } </script> ``` 在上面的代码中,我们使用 `computed` 属性中的 `tableColumns` 计算属性过滤出需要显示的表格,使用 `headerColumns` 计算属性生成动态表头。最后在表格组件中使用 `a-table-header` 标签渲染动态表头。 注意,上面的代码只是一个示例,实际使用时需要根据具体需求进行修改。 ### 回答2: 实现 ant design vue 表格的动态表头,需要进行以下步骤: 1. 先定义一个表头数组,其中每个表头对象包括标题(title)和键(key)两个属性。例如: ``` tableHeaders: [ { title: '姓名', key: 'name' }, { title: '年龄', key: 'age' }, { title: '性别', key: 'gender' } ] ``` 2. 在 ant design vue 的表格组件中,使用 v-for 指令遍历表头数组,动态生成表头: ``` <template> <a-table :columns="tableHeaders" :data-source="tableData"></a-table> </template> ``` 3. 然后定义一个表格数据数组,其中每个对象包括与表头键对应的值。例如: ``` tableData: [ { name: '张三', age: 20, gender: '男' }, { name: '李四', age: 25, gender: '女' }, { name: '王五', age: 30, gender: '男' } ] ``` 4. 确保表头对象的键与表格数据对象的属性相匹配,以保证表格能正确渲染数据。 5. 如需动态修改表头,可以通过改变表头数组的内容来实现,然后更新视图即可。 通过上述步骤,就可以实现 ant design vue 表格的动态表头功能。可以根据实际需求,灵活定义表头数组和表格数据数组,从而满足不同的动态表头需求。 ### 回答3: 在 ant design vue 中,可以通过使用表格的 header 属性实现动态表头。header 属性接受一个函数,该函数返回一个数组,数组中的每个元素对应表格的表头。在这个函数中,我们可以根据需要动态生成表头。 例如,我们可以在 data 中定义一个变量 columns,用于存储表格的表头。然后,在 header 函数中使用该变量返回表头数组。我们可以根据需求修改 columns 变量,从而实现动态表头。 具体步骤如下: 1. 在 data 中定义 columns 变量,并初始化为一个空数组。 2. 在 template 中使用 Table 组件,并通过 :columns="columns" 将 columns 变量绑定到表格的表头属性。 3. 在 header 函数中根据需要动态生成表头,并将其添加到 columns 数组中。 4. 在触发动态修改表头操作中,修改 columns 变量以更新表格的表头。 例如,我们可以在一个按钮的点击事件中动态添加一个新的表头: ``` <template> <div> <Button @click="addNewColumn">添加新的表头</Button> <Table :columns="columns" :dataSource="dataSource" /> </div> </template> <script> export default { data() { return { columns: [], dataSource: [...], }; }, methods: { addNewColumn() { const newColumn = { title: '新的表头', key: 'columnKey' }; this.columns.push(newColumn); }, }, computed: { header() { // TODO: 根据需要动态生成表头 return this.columns; }, }, }; </script> ``` 在这个例子中,点击按钮后会在表格上方添加一个新的表头。你可以根据实际需求自定义表头的属性和样式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值