高版本ant-design动态引用icon

需求

最近在更新自己的博客系统,从 vue2 升到 vue3,同步的也把 ant-design 从 1.7.8 跨越多个大版本升级到了 4.0.8,发现菜单上的 icon 报错了。

查询官方文档发现自从 2.0 版本以后的 icon 就不再支持通过 <a-icon /> 组件动态 type 的方式引入 icon 了。

但是目录这个部分不可能是写死的 icon。

解决方案

下载 ant-design/icons-vue 项目发现所有的图标都作为导出出现在项目中,故使用 import * 的方式进行全部引入,再通过动态组件的方式进行加载即可。

使用方法

<Icon type="HeartTwoTone" two-tone-color="#eb2f96"/>
<Icon type="check-circle-two-tone" two-tone-color="#52c41a" style="font-size: 20px" :spin="true"/>

API

  1. 支持“大驼峰式”组件写法
  2. 支持“短横线”分隔组件写法
  3. 支持 rotate【图标旋转角度】
  4. 支持 spin 【是否有旋转动画】
  5. 支持 style 【设置图标的样式】
  6. 支持 twoToneColor 【仅适用双色图标。设置双色图标的主要颜色】

组件源码

<script setup>
import {
   computed, defineProps} from "vue";
import * as icons from "@ant-design/icons-vue";

const props = defineProps({
   
    // icon图标名称
    type: {
   
        type: String,
        default: 'FireOutlined'
    }
});

/** 转化icon名称 */
const iconName = computed(() => {
   
    if (!props.type.includes("-")) {
   
        return props.type;
    }
    return props.type.charAt(0).toUpperCase() + props.type.slice(1).replace(/-([a-z])/g, function (g) {
   
        return g[1].toUpperCase();
    });
});
</script>

<template>
    <component :is="icons[iconName]" v-bind="$attrs"></component>
</template>

注意:仅支持 ant-design 原生的图标,而且仅是 icon 图标,不包含 svg 图标,不支持 iconfont。

相关推荐

  1. 版本ant-design动态引用icon

    2024-01-08 05:12:02       55 阅读
  2. Ant-Design-Vue 动态表头

    2024-01-08 05:12:02       27 阅读
  3. Ant-Design-Vue动态表头并填充数据

    2024-01-08 05:12:02       30 阅读
  4. Ant-Design-Vue动态表头并填充数据

    2024-01-08 05:12:02       32 阅读
  5. Ant-Design-Vue动态表头并填充数据

    2024-01-08 05:12:02       31 阅读
  6. 使用 Ant Design Vue 实现动态表头与数据填充

    2024-01-08 05:12:02       33 阅读
  7. Ant Design Vue 动态表头并填充数据

    2024-01-08 05:12:02       28 阅读
  8. Ant-Design-Vue动态表头并填充数据】

    2024-01-08 05:12:02       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 05:12:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 05:12:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 05:12:02       87 阅读
  4. Python语言-面向对象

    2024-01-08 05:12:02       96 阅读

热门阅读

  1. php中如何控制事务

    2024-01-08 05:12:02       52 阅读
  2. 安卓入门手册

    2024-01-08 05:12:02       42 阅读
  3. mac m1 goland调试模式踩坑记录

    2024-01-08 05:12:02       70 阅读
  4. git 常用命令 rebase发生冲突时 ☞ 撤销rebase

    2024-01-08 05:12:02       53 阅读
  5. Python练习之列表是否存在重复元素

    2024-01-08 05:12:02       55 阅读
  6. GB/T 34440-2017 硬质聚氯乙烯(SPC)地板

    2024-01-08 05:12:02       68 阅读
  7. YAML使用

    2024-01-08 05:12:02       55 阅读
  8. 【第2讲】微信机器人 · 自动发消息

    2024-01-08 05:12:02       49 阅读
  9. 软件安装文档 | Docker (简洁)

    2024-01-08 05:12:02       61 阅读
  10. 数据库原理与应用期末复习试卷2

    2024-01-08 05:12:02       61 阅读
  11. Phenograph聚类方法

    2024-01-08 05:12:02       58 阅读