]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor(ssr): adjust renderToString implementation
authorEvan You <yyx990803@gmail.com>
Thu, 30 Jan 2020 17:09:50 +0000 (12:09 -0500)
committerEvan You <yyx990803@gmail.com>
Thu, 30 Jan 2020 17:09:50 +0000 (12:09 -0500)
packages/server-renderer/src/renderToString.ts

index ebf96624cfce609f3bfdb22ad16ea93a511dcf4f..6efa66324a0b19be1374da2dee02a5fc16b4a6f2 100644 (file)
@@ -12,8 +12,7 @@ import {
   Portal,
   ShapeFlags,
   ssrUtils,
-  Slot,
-  createApp
+  Slot
 } from 'vue'
 import {
   isString,
@@ -84,22 +83,16 @@ function unrollBuffer(buffer: ResolvedSSRBuffer): string {
 }
 
 export async function renderToString(input: App | VNode): Promise<string> {
-  if (isVNode(input)) {
-    return renderAppToString(createApp({ render: () => input }))
-  } else {
-    return renderAppToString(input)
-  }
-}
-
-async function renderAppToString(app: App): Promise<string> {
-  const resolvedBuffer = await renderComponent(app._component, app._props, null)
+  const resolvedBuffer = await (isVNode(input)
+    ? renderComponent({ render: () => input })
+    : renderComponent(input._component, input._props))
   return unrollBuffer(resolvedBuffer)
 }
 
 export function renderComponent(
   comp: Component,
-  props: Props | null,
-  children: VNodeNormalizedChildren | null,
+  props: Props | null = null,
+  children: VNodeNormalizedChildren | null = null,
   parentComponent: ComponentInternalInstance | null = null
 ): ResolvedSSRBuffer | Promise<ResolvedSSRBuffer> {
   return renderComponentVNode(