🐛(select and tab): 修复插槽解析逻辑 (优化速度)
This commit is contained in:
@@ -71,20 +71,18 @@ const options = ref<any>([]);
|
||||
var timer: any;
|
||||
|
||||
const getOption = (nodes: VNode[], newOptions: any[]) => {
|
||||
const showNodes = nodes?.filter((item: VNode) => {
|
||||
return item.children != "v-if";
|
||||
});
|
||||
|
||||
showNodes?.map((item: VNode) => {
|
||||
nodes?.map((item) => {
|
||||
let component = item.type as Component;
|
||||
if (component.name === LaySelectOption.name) {
|
||||
if (item.children) {
|
||||
// @ts-ignore
|
||||
item.props.label = item.children.default()[0].children;
|
||||
}
|
||||
newOptions.push(item.props);
|
||||
} else {
|
||||
if(item.type.toString() == "Symbol(Fragment)") {
|
||||
getOption(item.children as VNode[], newOptions);
|
||||
} else {
|
||||
if (component.name == LaySelectOption.name) {
|
||||
if (item.children) {
|
||||
// @ts-ignore
|
||||
item.props.label = item.children.default()[0].children;
|
||||
}
|
||||
newOptions.push(item.props);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -25,7 +25,7 @@ import {
|
||||
reactive,
|
||||
h,
|
||||
createTextVNode,
|
||||
Fragment,
|
||||
Fragment
|
||||
} from "vue";
|
||||
import { useResizeObserver } from "@vueuse/core";
|
||||
import { TabData, TabInjectKey, TabPosition } from "./interface";
|
||||
@@ -45,15 +45,14 @@ const childrens: Ref<VNode[]> = ref([]);
|
||||
const tabMap = reactive(new Map<number, TabData>());
|
||||
|
||||
const setItemInstanceBySlot = function (nodes: VNode[]) {
|
||||
const showNodes = nodes?.filter((item: VNode) => {
|
||||
return item.children != "v-if";
|
||||
});
|
||||
showNodes?.map((item) => {
|
||||
nodes?.map((item) => {
|
||||
let component = item.type as Component;
|
||||
if (component.name != tabItem.name) {
|
||||
if(item.type.toString() == "Symbol(Fragment)") {
|
||||
setItemInstanceBySlot(item.children as VNode[]);
|
||||
} else {
|
||||
childrens.value.push(item);
|
||||
if (component.name == tabItem.name) {
|
||||
childrens.value.push(item);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user