Skip to content

Commit 05f94cf

Browse files
committed
fix(compiler-ssr): disable v-once transform in ssr vdom fallback branch
fix #7644
1 parent 036914c commit 05f94cf

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

packages/compiler-core/src/transforms/vOnce.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const seen = new WeakSet()
77

88
export const transformOnce: NodeTransform = (node, context) => {
99
if (node.type === NodeTypes.ELEMENT && findDir(node, 'once', true)) {
10-
if (seen.has(node) || context.inVOnce) {
10+
if (seen.has(node) || context.inVOnce || context.inSSR) {
1111
return
1212
}
1313
seen.add(node)

packages/compiler-ssr/__tests__/ssrComponent.spec.ts

+28
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,34 @@ describe('ssr: components', () => {
286286
`)
287287
})
288288

289+
// #7644
290+
test('slot content with v-once', () => {
291+
const { code } = compile(`<foo><bar v-once /></foo>`)
292+
expect(code).not.toMatch(`_cache`)
293+
expect(compile(`<foo><bar v-once /></foo>`).code).toMatchInlineSnapshot(`
294+
"const { resolveComponent: _resolveComponent, withCtx: _withCtx, createVNode: _createVNode } = require(\\"vue\\")
295+
const { ssrRenderComponent: _ssrRenderComponent } = require(\\"vue/server-renderer\\")
296+
297+
return function ssrRender(_ctx, _push, _parent, _attrs) {
298+
const _component_foo = _resolveComponent(\\"foo\\")
299+
const _component_bar = _resolveComponent(\\"bar\\")
300+
301+
_push(_ssrRenderComponent(_component_foo, _attrs, {
302+
default: _withCtx((_, _push, _parent, _scopeId) => {
303+
if (_push) {
304+
_push(_ssrRenderComponent(_component_bar, null, null, _parent, _scopeId))
305+
} else {
306+
return [
307+
_createVNode(_component_bar)
308+
]
309+
}
310+
}),
311+
_: 1 /* STABLE */
312+
}, _parent))
313+
}"
314+
`)
315+
})
316+
289317
describe('built-in fallthroughs', () => {
290318
test('transition', () => {
291319
expect(compile(`<transition><div/></transition>`).code)

0 commit comments

Comments
 (0)