el-tree组件只有一级节点显示图片,并默认是一张图片,展开时是另外一张图片

<el-tree :data="treeData" :props="defaultProps" show-checkbox :render-content="renderContent"

@check-change="handleCheckChange" >

</el-tree>

data数据:

treeData: [{

id: 1,

label: "一级节点 1",

children: [{

id: 2,

label: "二级节点 1-1"

},

{

id: 3,

label: "二级节点 1-2"

}

]

},

{

id: 4,

label: "一级节点 2",

children: [{

id: 5,

label: "二级节点 2-1"

},

{

id: 5,

label: "二级节点 2-1"

},

{

id: 5,

label: "二级节点 2-1"

}

]

}

],

defaultProps: {

children: "children",

label: "label"

},

方法:

renderContent(h, {

node,

data,

store

}) {

const isTopLevel = node.level === 1;

return ( <

span class = "custom-tree-node" > {

isTopLevel && ( <

img src = {

node.checked ? require('@/assets/33.png') : require('@/assets/32.png')

}

alt = "Node Image"

style = "width: 16px; height: 16px; vertical-align: middle; margin-right: 5px;" /

>

)

} {

node.label

} <

/span>

);

},

handleCheckChange(data, checked, indeterminate) {

this.$refs.tree.updateKeyChildren(data.id);

},

如果都需要图片:去掉isTopLevel即可,

如果是图标:在el-tree中添加插槽(也是父节点有图标,反之去掉判断)

<span slot-scope="{ node, data }" class="slot-t-node">

<template>

<i v-if="node.level === 1" :class="{

'el-icon-folder': !node.expanded, // 节点收缩时的图标

'el-icon-folder-opened': node.expanded, // 节点展开时的图标

'el-icon-user-solid': data.type === 2 // data.type是后端配合提供的识别字段,最后一级

}" style="color: #409eff;" />

<span>{{ node.label }}</span>

</template>

</span>

相关推荐
人工智能训练师21 小时前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
Seveny0721 小时前
pnpm相对于npm,yarn的优势
前端·npm·node.js
yddddddy1 天前
css的基本知识
前端·css
昔人'1 天前
css `lh`单位
前端·css
前端君1 天前
实现最大异步并发执行队列
javascript
Nan_Shu_6141 天前
Web前端面试题(2)
前端
知识分享小能手1 天前
React学习教程,从入门到精通,React 组件核心语法知识点详解(类组件体系)(19)
前端·javascript·vue.js·学习·react.js·react·anti-design-vue
蚂蚁RichLab前端团队1 天前
🚀🚀🚀 RichLab - 花呗前端团队招贤纳士 - 【转岗/内推/社招】
前端·javascript·人工智能
孩子 你要相信光1 天前
css之一个元素可以同时应用多个动画效果
前端·css
萌萌哒草头将军1 天前
Oxc 和 Rolldown Q4 更新计划速览!🚀🚀🚀
javascript·vue.js·vite