]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compiler-ssr): avoid unnecessary withCtx import
authorEvan You <yyx990803@gmail.com>
Wed, 29 Apr 2020 20:21:54 +0000 (16:21 -0400)
committerEvan You <yyx990803@gmail.com>
Wed, 29 Apr 2020 20:21:54 +0000 (16:21 -0400)
packages/compiler-ssr/__tests__/ssrComponent.spec.ts
packages/compiler-ssr/src/transforms/ssrTransformComponent.ts

index c0275dc93ba9c524b3a7e489b30e64ee0ce7e99e..8c5fb0d868bb954f79e8050170eb35e06363f88f 100644 (file)
@@ -3,7 +3,7 @@ import { compile } from '../src'
 describe('ssr: components', () => {
   test('basic', () => {
     expect(compile(`<foo id="a" :prop="b" />`).code).toMatchInlineSnapshot(`
-      "const { resolveComponent: _resolveComponent, withCtx: _withCtx } = require(\\"vue\\")
+      "const { resolveComponent: _resolveComponent } = require(\\"vue\\")
       const { ssrRenderComponent: _ssrRenderComponent } = require(\\"@vue/server-renderer\\")
 
       return function ssrRender(_ctx, _push, _parent) {
@@ -20,7 +20,7 @@ describe('ssr: components', () => {
   test('dynamic component', () => {
     expect(compile(`<component is="foo" prop="b" />`).code)
       .toMatchInlineSnapshot(`
-      "const { resolveDynamicComponent: _resolveDynamicComponent, withCtx: _withCtx } = require(\\"vue\\")
+      "const { resolveDynamicComponent: _resolveDynamicComponent } = require(\\"vue\\")
       const { ssrRenderComponent: _ssrRenderComponent } = require(\\"@vue/server-renderer\\")
 
       return function ssrRender(_ctx, _push, _parent) {
@@ -30,7 +30,7 @@ describe('ssr: components', () => {
 
     expect(compile(`<component :is="foo" prop="b" />`).code)
       .toMatchInlineSnapshot(`
-      "const { resolveDynamicComponent: _resolveDynamicComponent, withCtx: _withCtx } = require(\\"vue\\")
+      "const { resolveDynamicComponent: _resolveDynamicComponent } = require(\\"vue\\")
       const { ssrRenderComponent: _ssrRenderComponent } = require(\\"@vue/server-renderer\\")
 
       return function ssrRender(_ctx, _push, _parent) {
@@ -285,7 +285,7 @@ describe('ssr: components', () => {
 
       expect(compile(`<keep-alive><foo/></keep-alive>`).code)
         .toMatchInlineSnapshot(`
-        "const { resolveComponent: _resolveComponent, withCtx: _withCtx } = require(\\"vue\\")
+        "const { resolveComponent: _resolveComponent } = require(\\"vue\\")
         const { ssrRenderComponent: _ssrRenderComponent } = require(\\"@vue/server-renderer\\")
 
         return function ssrRender(_ctx, _push, _parent) {
index 95eace9ad507faf65633fac19a211f56cfda16a4..31ee943c47263f7e4c17f215ea9407f1eb438817 100644 (file)
@@ -96,10 +96,12 @@ export const ssrTransformComponent: NodeTransform = (node, context) => {
     // Using the cloned node, build the normal VNode-based branches (for
     // fallback in case the child is render-fn based). Store them in an array
     // for later use.
-    buildSlots(clonedNode, context, (props, children) => {
-      vnodeBranches.push(createVNodeSlotBranch(props, children, context))
-      return createFunctionExpression(undefined)
-    })
+    if (clonedNode.children.length) {
+      buildSlots(clonedNode, context, (props, children) => {
+        vnodeBranches.push(createVNodeSlotBranch(props, children, context))
+        return createFunctionExpression(undefined)
+      })
+    }
 
     const props =
       node.props.length > 0