当前位置: 首页 > news >正文

Vue 图标动态加载:Ant Design Vue 的 a-tree 图标实现与优化

1. 问题描述

  • 需求:在 a-tree 中根据节点数据动态显示不同的图标。

  • 错误示例是使用直接引入@/assets/img/1.jpg 作为图片路径

以下是错误代码实例

 2.问题分析与解决思路

  • 问题原因:@/assets 路径在运行时无法正确解析为图片路径。

  • 解决方案:通过动态导入图片资源(import)来解决路径问题。

3.代码实现

关键代码

import TreeIcon from '@/assets/img/1.jpg'; // 动态导入图片

完整实现代码 

<template><div class="tree"><a-tree:tree-data="treeData"show-icondefault-expand-all:auto-expand-parent="true"><template #icon="{ data }"><img:src="data.thum"style="height: 12px; width: 15px; margin-right: 5px"alt=""/></template></a-tree></div>
</template><script setup>
import { ref } from "vue";
import TreeIcon from '@/assets/img/1.jpg'; // 动态导入图片const treeData = ref([{title: "parent 1",key: "0-0",thum: TreeIcon, // 使用动态导入的图片路径children: [{title: "parent 1-0",key: "0-0-0",thum: TreeIcon,children: [{ title: "leaf", key: "0-0-0-0", thum: TreeIcon },{ title: "leaf", key: "0-0-0-1", thum: TreeIcon },],},// 其他节点...],},
]);
</script>

 4.优化与扩展

   4-1 统一管理图片路径:将图片路径集中管理,避免重复代码。

// assets/icons.js
export const ICONS = {default: import('@/assets/img/1.jpg'),folder: import('@/assets/img/folder.png'),
};

使用时:

import { ICONS } from '@/assets/icons.js';
// ...
thum: ICONS.default,

4-2 处理图片加载失败:为图片添加错误处理逻辑,确保用户体验。

<img:src="data.thum"@error="handleImageError"style="height: 12px; width: 15px; margin-right: 5px"alt=""
/>
const handleImageError = (e) => {e.target.src = '/default-icon.png'; // 使用默认图标
};

相关文章:

  • 人工智能(机器人)通识实验室解决方案
  • vue3环境搭建、nodejs22.x安装、yarn 1全局安装、npm切换yarn 1、yarn 1 切换npm
  • 21.C++11
  • UWB定位技术面临的主要挑战
  • Anconda环境下修改Jupyter notebook的启动路径(Windows)
  • 人工智能应用开发的四种主流方法(提示工程、大模型微调、RAG、Agent)的详细对比分析
  • Jenkins插件下载慢解决办法
  • 超细的ollama下载以及本地部署deepseek项目
  • 【第三章】18-常用模块6-ngx_http_mirr_module
  • CExercise_13_1排序算法_2归并排序
  • 基于EasyX库开发的球球大作战游戏
  • 银河麒麟(Kylin) - V10 SP1桌面操作系统ARM64编译QT-5.15.12版本
  • 2025年国企社招欧治链金再生资源入职测评笔试中智赛码平台SHL测试平台Verify认知能力测试
  • linux-设置每次ssh登录服务器的时候提醒多久需要修改密码
  • MCP调用示例-GitHub仓库操作
  • c++解决动态规划
  • 【16】数据结构之基于树的排序算法篇章
  • 行业深度:金融数据治理中的 SQL2API 应用创新
  • Google政策大更新:影响金融,新闻,社交等所有类别App
  • 亚远景-自动驾驶时代,ASPICE评估标准将如何演进?
  • 中国强镇密码丨洪泽湖畔的蒋坝,如何打破古镇刻板印象
  • 平安资管总经理罗水权因个人工作原因辞职
  • “80后”杨占旭已任辽宁阜新市副市长,曾任辽宁石油化工大学副校长
  • 辽宁辽阳市白塔区一饭店发生火灾,当地已启动应急响应机制
  • 北京发布今年第四轮拟供商品住宅用地清单,共计5宗22公顷
  • 昂立教育:去年减亏1.39亿元,今年以“利润持续增长”为核心目标