fix(hmr): support hmr for static nodes

This commit is contained in:
Evan You
2020-04-30 14:38:13 -04:00
parent 9f8ed4a9b5
commit 386b093554
2 changed files with 19 additions and 2 deletions

View File

@@ -115,6 +115,7 @@ export interface RendererOptions<
anchor: HostNode | null,
isSVG: boolean
): HostElement
setStaticContent?(node: HostElement, content: string): void
}
// Renderer Node can technically be any object in the context of core renderer
@@ -330,7 +331,8 @@ function baseCreateRenderer(
nextSibling: hostNextSibling,
setScopeId: hostSetScopeId = NOOP,
cloneNode: hostCloneNode,
insertStaticContent: hostInsertStaticContent
insertStaticContent: hostInsertStaticContent,
setStaticContent: hostSetStaticContent
} = options
// Note: functions inside this closure should use `const xxx = () => {}`
@@ -363,7 +365,13 @@ function baseCreateRenderer(
case Static:
if (n1 == null) {
mountStaticNode(n2, container, anchor, isSVG)
} // static nodes are noop on patch
} else if (__DEV__) {
// static nodes are only patched during dev for HMR
n2.el = n1.el
if (n2.children !== n1.children) {
hostSetStaticContent!(n2.el!, n2.children as string)
}
}
break
case Fragment:
processFragment(