diff --git a/packages/babel-plugin-jsx/src/transform-vue-jsx.ts b/packages/babel-plugin-jsx/src/transform-vue-jsx.ts index 0ebefa5..635807d 100644 --- a/packages/babel-plugin-jsx/src/transform-vue-jsx.ts +++ b/packages/babel-plugin-jsx/src/transform-vue-jsx.ts @@ -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]); } } diff --git a/packages/babel-plugin-jsx/test/__snapshots__/snapshot.test.ts.snap b/packages/babel-plugin-jsx/test/__snapshots__/snapshot.test.ts.snap index fe97df9..c00325b 100644 --- a/packages/babel-plugin-jsx/test/__snapshots__/snapshot.test.ts.snap +++ b/packages/babel-plugin-jsx/test/__snapshots__/snapshot.test.ts.snap @@ -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 });" `;