diff --git a/packages/jsx-directive/tests/__snapshots__/v-slot.test.ts.snap b/packages/jsx-directive/tests/__snapshots__/v-slot.test.ts.snap index 92b99dd61..49a57f079 100644 --- a/packages/jsx-directive/tests/__snapshots__/v-slot.test.ts.snap +++ b/packages/jsx-directive/tests/__snapshots__/v-slot.test.ts.snap @@ -29,7 +29,7 @@ defineRender(() => (
<> {foo} - <>default,$stable: true,}}> + <>default,}}> ,$stable: true,}}> <>default,$stable: true,}}> diff --git a/packages/jsx-directive/tests/fixtures/v-slot/index.vue b/packages/jsx-directive/tests/fixtures/v-slot/index.vue index 4c3ad6fd6..19539396d 100644 --- a/packages/jsx-directive/tests/fixtures/v-slot/index.vue +++ b/packages/jsx-directive/tests/fixtures/v-slot/index.vue @@ -25,7 +25,7 @@ defineRender(() => (
{foo} - default + default default diff --git a/packages/volar/src/jsx-directive/v-slot.ts b/packages/volar/src/jsx-directive/v-slot.ts index 38a4852e8..4cffb260c 100644 --- a/packages/volar/src/jsx-directive/v-slot.ts +++ b/packages/volar/src/jsx-directive/v-slot.ts @@ -91,17 +91,19 @@ export function transformVSlot( ] : 'default', `: (`, - (!isNamespace || attributeName) && - isJsxExpression(attribute.initializer) && - attribute.initializer.expression - ? ([ - getText(attribute.initializer.expression, options), - source, - getStart(attribute.initializer.expression, options), - allCodeFeatures, - ] as Code) - : '', - isDynamic ? ': any' : '', + ...((!isNamespace || attributeName) && + isJsxExpression(attribute.initializer) && + attribute.initializer.expression + ? [ + [ + getText(attribute.initializer.expression, options), + source, + getStart(attribute.initializer.expression, options), + allCodeFeatures, + ] as Code, + isDynamic ? ': any' : '', + ] + : []), ') => <>', ...children.map((child) => { replaceSourceRange(codes, source, child.pos, child.end)