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)