Merge pull request #39 from cshaptx4869/patch-11

refactor(SidebarMenuItemTitle): ♻️ 去除冗余代码
This commit is contained in:
Ray Hao 2024-03-01 13:02:28 +08:00 committed by GitHub
commit 9b5d10ca0b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 3 additions and 17 deletions

View File

@ -1,17 +1,15 @@
<template> <template>
<el-icon v-if="icon && icon.startsWith('el-icon')" class="sub-el-icon"> <el-icon v-if="icon && icon.startsWith('el-icon')" class="sub-el-icon">
<component :is="renderIcon(icon.replace('el-icon-', ''))" /> <component :is="icon.replace('el-icon-', '')" />
</el-icon> </el-icon>
<SvgIcon v-else-if="icon" :icon-class="icon" /> <svg-icon v-else-if="icon" :icon-class="icon" />
<SvgIcon v-else icon-class="menu" /> <svg-icon v-else icon-class="menu" />
<span v-if="title" class="ml-1">{{ translateRouteTitle(title) }}</span> <span v-if="title" class="ml-1">{{ translateRouteTitle(title) }}</span>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { translateRouteTitle } from "@/utils/i18n"; import { translateRouteTitle } from "@/utils/i18n";
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
defineProps({ defineProps({
icon: { icon: {
type: String, type: String,
@ -22,18 +20,6 @@ defineProps({
default: "", default: "",
}, },
}); });
/**
* 渲染图标组件
*/
type IconNames = keyof typeof ElementPlusIconsVue;
const renderIcon = (iconName: string) => {
const iconComponent = ElementPlusIconsVue[iconName as IconNames];
if (iconComponent) {
return h(resolveComponent(iconComponent.name));
}
return null;
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>