vue 修改ant中table表格的展开图标 树形表格expandIcon自定义图标

首先看ant 文档给出的API expandIcon
在这里插入图片描述

这里给了两个方法 第一种是在js里面写 第二种是在模板里面写插槽
我这里用的插槽
因为我这里用的是vue3 我用第一种方法写 js里面引用图标还是会显示图标未引用 虽然也能展示出来 但页面会报错 时间紧迫没研究直接用第二种第二种vue2,3均可用 只需要换上2的语法就好
如果用vue2的小伙伴可以选择第一种方法 应该是没什么问题的 因为图标不是组件
这里第一种方式也会说下 因为两种方式差别不大的

***效果图长这样

在这里插入图片描述

第一种方式(不行的话 别急 看第二种 亲测有效)
在table里面加上这个参数

<a-table :expandIcon="expandIcon" ></a-table>

然后在js里面写

 // 展开图标
      expandIcon(props) {
     //判断当有子级时添加图标
        if (props.record.children.length > 0) {
        //有数据-展开时候图标
          if (props.expanded) {
          //这里的margin-right是为了让图标和字体有一点间距
            return (
              <span
                 style="margin-right:10px"
                onClick={(e) => {
                  props.onExpand(props.record, e);
                }}
              >
                <a-icon type="caret-down" />
              </span>
            );
           //无数据时-关闭的图标
          } else {
            return (
              <span
                style="margin-right:10px"
                onClick={(e) => {
                  props.onExpand(props.record, e);
                }}
              >
                <a-icon type="caret-right" />
              </span>
            );
          }
        } else {
        //这里是为了让无图标子级的父元素也给了个margin-right,让它跟有子级的父元素在同一竖线上
          return <span style="margin-right:19px"></span>;
        }
      }

第二种方式 超级详细教程 亲测有效(限vue3)因为插槽写法不一样
使用插槽 在table里面写
这里就不过多解释了 第一种方法里都有

<a-table>
  <template #expandIcon="props">
        <span v-if="props.record.children.length > 0">
          <div
            v-if="props.expanded"
            style="display: inline-block; margin-right: 10px"
            @click="
              (e) => {
                props.onExpand(props.record, e);
              }
            "
          >
            <DownOutlined />
          </div>
          <div
            v-else
            style="display: inline-block; margin-right: 10px"
            @click="
              (e) => {
                props.onExpand(props.record, e);
              }
            "
          >
            <RightOutlined />
          </div>
        </span>
        <span v-else style="margin-right:29px"></span>
      </template>
</a-table>

图标的引用 这里也贴一下吧 避免小伙伴找不到

import { RightOutlined, DownOutlined } from "@ant-design/icons-vue";
  components: {
    RightOutlined,
    DownOutlined,
  },

看眼结构是这样子的啊 别写错了 (也是操碎了心)
在这里插入图片描述
over 不懂留言

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值