fix: add slotFlags for implicit default slots

This commit is contained in:
Kael 2025-02-19 19:03:10 +11:00
parent 5e77d5d5e5
commit 453d99f906
2 changed files with 13 additions and 4 deletions

View File

@ -512,7 +512,11 @@ const transformJSXElement = (
) {
VNodeChild = t.objectExpression([
t.objectProperty(t.identifier('default'), child),
]);
optimize && t.objectProperty(
t.identifier('_'),
t.numericLiteral(slotFlag),
) as any,
].filter(Boolean));
} else if (t.isObjectExpression(child)) {
VNodeChild = t.objectExpression(
[
@ -526,9 +530,13 @@ const transformJSXElement = (
? t.objectExpression([
t.objectProperty(
t.identifier('default'),
t.arrowFunctionExpression([], t.arrayExpression([child]))
t.arrowFunctionExpression([], child),
),
])
optimize && t.objectProperty(
t.identifier('_'),
t.numericLiteral(slotFlag),
) as any,
].filter(Boolean))
: t.arrayExpression([child]);
}
}

View File

@ -164,7 +164,8 @@ _createVNode(_resolveComponent("A"), null, {
exports[`passing object slots via JSX children single expression, function expression > single expression, function expression 1`] = `
"import { resolveComponent as _resolveComponent, createVNode as _createVNode } from "vue";
_createVNode(_resolveComponent("A"), null, {
default: () => "foo"
default: () => "foo",
_: 1
});"
`;