原
vue3动态生成组件,vue3动态生成element plus组件,动态生成el-tag。数据字典与类型的动态解析

示例代码如下:
<template>
<el-table :data="tableData">
<el-table-column align="center" label="敏感词类型" prop="sensitive_type" min-width="100">
<template #default="scope">
<component :is="renderSensitiveType(scope.row.sensitive_type)" />
</template>
</el-table-column>
</el-table>
</template>
<script setup lang="ts">
import { ref, h } from 'vue';
import { ElTag } from 'element-plus';
// 模拟 dictionary 函数
const dictionary = (type: string) => {
if (type === 'sensitive_type') {
return [
{ value: '1', label: '类型1', color: 'success' },
{ value: '2', label: '类型2', color: 'warning' },
];
}
return [];
};
let sensitive_type_dic = dictionary('sensitive_type');
const tableData = ref([
{ sensitive_type: '1' },
{ sensitive_type: '2' },
{ sensitive_type: '' },
]);
const renderSensitiveType = (_value: string) => {
if (_value) {
let st = sensitive_type_dic.find((o: any) => o.value === _value);
return () => h(ElTag, { type: st.color }, () => st.label);
} else {
return () => '无!';
}
};
</script>
代码解释:
1:运用<component :is="...">
动态渲染组件。renderSensitiveType
函数会返回一个渲染函数,此函数会生成对应的组件或者文本内容。
2:h
函数(即 createVNode
)是 Vue 用来创建虚拟节点的核心函数。
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价
排名
8
文章
243
粉丝
7
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术