Skip to content

Commit 9c0464d

Browse files
committed
perf: layout
1 parent 6e5390c commit 9c0464d

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

components/layout/Sider.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ export default defineComponent({
200200
attrs.class,
201201
);
202202
return (
203-
<aside {...attrs} class={siderCls} style={divStyle} ref={ref}>
203+
<aside {...attrs} class={siderCls} style={divStyle}>
204204
<div class={`${pre}-children`}>{slots.default?.()}</div>
205205
{collapsible || (below.value && zeroWidthTrigger) ? triggerDom : null}
206206
</aside>

components/layout/layout.tsx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import type { ExtractPropTypes, HTMLAttributes } from 'vue';
2-
import { createVNode, defineComponent, provide, ref } from 'vue';
2+
import { computed, createVNode, defineComponent, provide, ref } from 'vue';
33
import PropTypes from '../_util/vue-types';
4-
import classNames from '../_util/classNames';
54
import useConfigInject from '../_util/hooks/useConfigInject';
65
import { SiderHookProviderKey } from './injectionKey';
76

@@ -32,7 +31,7 @@ function generator({ suffixCls, tagName, name }: GeneratorArgument) {
3231
prefixCls: prefixCls.value,
3332
tagName,
3433
};
35-
return <BasicComponent {...basicComponentProps}>{slots.default?.()}</BasicComponent>;
34+
return <BasicComponent {...basicComponentProps} v-slots={slots}></BasicComponent>;
3635
};
3736
},
3837
});
@@ -43,7 +42,7 @@ function generator({ suffixCls, tagName, name }: GeneratorArgument) {
4342
const Basic = defineComponent({
4443
props: basicProps,
4544
setup(props, { slots }) {
46-
return () => createVNode(props.tagName, { class: props.prefixCls }, slots.default?.());
45+
return () => createVNode(props.tagName, { class: props.prefixCls }, slots);
4746
},
4847
});
4948

@@ -62,15 +61,18 @@ const BasicLayout = defineComponent({
6261
};
6362

6463
provide(SiderHookProviderKey, siderHookProvider);
65-
66-
return () => {
67-
const { prefixCls, hasSider, tagName } = props;
68-
const divCls = classNames(prefixCls, {
64+
const divCls = computed(() => {
65+
const { prefixCls, hasSider } = props;
66+
return {
67+
[`${prefixCls}`]: true,
6968
[`${prefixCls}-has-sider`]:
7069
typeof hasSider === 'boolean' ? hasSider : siders.value.length > 0,
7170
[`${prefixCls}-rtl`]: direction.value === 'rtl',
72-
});
73-
return createVNode(tagName, { class: divCls }, slots.default?.());
71+
};
72+
});
73+
return () => {
74+
const { tagName } = props;
75+
return createVNode(tagName, { class: divCls.value }, slots);
7476
};
7577
},
7678
});

0 commit comments

Comments
 (0)