Commit 144fde8a688217440071c7b0ac70e46f6832635a

Authored by vben
1 parent f75425d1

fix: fix abnormal breadcrumb status

src/layouts/default/LayoutBreadcrumb.tsx
@@ -10,20 +10,23 @@ import { PageEnum } from '/@/enums/pageEnum'; @@ -10,20 +10,23 @@ import { PageEnum } from '/@/enums/pageEnum';
10 import { isBoolean } from '/@/utils/is'; 10 import { isBoolean } from '/@/utils/is';
11 11
12 import { compile } from 'path-to-regexp'; 12 import { compile } from 'path-to-regexp';
13 -import Icon from '/@/components/Icon';  
14 13
15 export default defineComponent({ 14 export default defineComponent({
16 name: 'BasicBreadcrumb', 15 name: 'BasicBreadcrumb',
17 - props: {  
18 - showIcon: {  
19 - type: Boolean,  
20 - default: false,  
21 - },  
22 - },  
23 - setup(props) { 16 + setup() {
24 const itemList = ref<AppRouteRecordRaw[]>([]); 17 const itemList = ref<AppRouteRecordRaw[]>([]);
  18 +
25 const { currentRoute, push } = useRouter(); 19 const { currentRoute, push } = useRouter();
26 20
  21 + watch(
  22 + () => currentRoute.value,
  23 + () => {
  24 + if (unref(currentRoute).name === 'Redirect') return;
  25 + getBreadcrumb();
  26 + },
  27 + { immediate: true }
  28 + );
  29 +
27 function getBreadcrumb() { 30 function getBreadcrumb() {
28 const { matched } = unref(currentRoute); 31 const { matched } = unref(currentRoute);
29 const matchedList = matched.filter((item) => item.meta && item.meta.title).slice(1); 32 const matchedList = matched.filter((item) => item.meta && item.meta.title).slice(1);
@@ -63,36 +66,23 @@ export default defineComponent({ @@ -63,36 +66,23 @@ export default defineComponent({
63 return push(pathCompile(path)); 66 return push(pathCompile(path));
64 } 67 }
65 68
66 - watch(  
67 - () => currentRoute.value,  
68 - () => {  
69 - if (unref(currentRoute).name === 'Redirect') return;  
70 - getBreadcrumb();  
71 - },  
72 - { immediate: true }  
73 - );  
74 -  
75 return () => ( 69 return () => (
76 <Breadcrumb class="layout-breadcrumb"> 70 <Breadcrumb class="layout-breadcrumb">
77 {() => ( 71 {() => (
78 <TransitionGroup name="breadcrumb"> 72 <TransitionGroup name="breadcrumb">
79 {() => { 73 {() => {
80 return unref(itemList).map((item) => { 74 return unref(itemList).map((item) => {
81 - const isLink = !!item.redirect && !item.meta.disabledRedirect; 75 + const isLink =
  76 + (!!item.redirect && !item.meta.disabledRedirect) ||
  77 + !item.children ||
  78 + item.children.length === 0;
82 return ( 79 return (
83 <BreadcrumbItem 80 <BreadcrumbItem
84 key={item.path} 81 key={item.path}
85 isLink={isLink} 82 isLink={isLink}
86 onClick={handleItemClick.bind(null, item)} 83 onClick={handleItemClick.bind(null, item)}
87 > 84 >
88 - {() => (  
89 - <>  
90 - {props.showIcon && item.meta.icon && item.meta.icon.trim() !== '' && (  
91 - <Icon icon={item.meta.icon} class="icon mr-1 mb-1" />  
92 - )}  
93 - {item.meta.title}  
94 - </>  
95 - )} 85 + {() => item.meta.title}
96 </BreadcrumbItem> 86 </BreadcrumbItem>
97 ); 87 );
98 }); 88 });