Arco Design Vue初探——表格可扩展、模态框嵌套表单确定前处理记录

背景:最近有个小项目,用了Arco Design Vue 来实现的;体验感总体组件功能还是蛮强大的不过文档还是不太详细,一些设置我觉得不理解就想Modal中@ok 在我看来这个事件就是多余的,不知道为什么有这个设计;
依赖版本:
@arco-design/web-vue: “^2.37.4”;
vue: “^3.2.41”,

一.表格可扩展自定义,用JSX或者h 函数解决;

官网可扩展例子

在这里插入图片描述
在这里插入图片描述
官网的例子过于简单,实现复杂的例子还是需要用JSX 或者 函数h 来实现;
具体教程
实际应用效果:
在这里插入图片描述

//用的h 函数来实现的;
import { reactive,h} from 'vue';
  const expandable = reactive({
      title: '',
      width: 36,
      expandedRowRender: (record) => {
        if (record.config && Object.keys(record.config).length > 0) {
          res.value = []
          for (let item in record?.config) {
            let obj = {}
            obj.label = item,
            obj.value = record.config[item]
            record.config && res.value.push(obj)
          }
          return h(Descriptions, {
            data: res.value, column: 4, title: '配置', bordered: true
          })
        }
      }
    });

二.模态框a-modal嵌套a-form,使用确认事件@ok校验逻辑不走直接关闭模态框,将@ok 更改为@before-ok 事件

在这里插入图片描述

官网解释:@ok 就是modal 确认按钮的默认事件,你调用 则modal就会关闭,所以表单校验成功与否都会关闭;

//主要代码实现如下:
    const handleBeforeOk = (done: (closed: boolean) => void) => {
      formRef.value.validate()
        .then(async (res: any) => {
          if (!res) {
            try {
            } catch (e) { }
          }
          done(!res ? true : false);
        })
        .catch((error: any) => {
          done(false);
        })
    };
### 实现 Arco Design Vue 中自定义表格头图标的点击事件 在 Arco Design Vue 组件库中,可以通过 `customHeaderCell` 或者直接通过插槽来自定义表头的内容。为了实现带有图标并绑定点击事件的功能,可以按照以下方式操作: #### 方法一:使用插槽自定义表头 通过 `<template>` 插槽的方式,在指定列的头部插入自定义内容,比如一个按钮或者图标。 ```vue <template> <a-table :columns="columns" :data="data"> <!-- 自定义表头 --> <template #headerCell="{ column }"> <span v-if="column.key === 'action'"> Custom Header with Icon <a-icon type="edit" @click="handleIconClick"></a-icon> </span> <span v-else>{{ column.title }}</span> </template> </a-table> </template> <script> export default { data() { return { columns: [ { title: 'Name', dataIndex: 'name', key: 'name' }, { title: 'Age', dataIndex: 'age', key: 'age' }, { title: 'Action', dataIndex: '', key: 'action' } ], data: [ { name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park' }, { name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park' } ] }; }, methods: { handleIconClick() { console.log('Icon clicked!'); } } }; </script> ``` 上述代码展示了如何利用插槽来覆盖默认的表头渲染逻辑,并添加了一个可点击的编辑图标[^1]。 #### 方法二:通过配置项设置自定义表头 如果不想使用模板插槽,也可以通过 `columns` 配置中的 `slots` 属性完成同样的功能。 ```javascript const columns = [ { title: 'Name', dataIndex: 'name', key: 'name' }, { title: () => ( <> Age{' '} <a-icon type="info-circle" onClick={() => this.handleInfoClick()} /> </> ), dataIndex: 'age', key: 'age' } ]; ``` 此方法适用于更复杂的场景,其中可以直接嵌入 React 节点或函数返回 JSX 结构。 需要注意的是,当采用这种方式时,确保组件内部支持动态节点解析以及交互行为绑定。 --- ### 注意事项 1. **事件冒泡处理**:由于表头区域可能还存在其他交互元素(如排序),因此建议对图标点击事件进行阻止冒泡的操作。 ```javascript handleIconClick(event) { event.stopPropagation(); console.log('Only icon is triggered.'); } ``` 2. **样式调整**:根据实际需求修改样式的布局和间距,使图标与文字保持一致美观的效果。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值