fix(ssr): should de-optimize on vnode with PatchFlags.BAIL (#4818)

fix #4679
fix #5771
This commit is contained in:
edison 2022-05-10 18:35:34 +08:00 committed by GitHub
parent 410144149f
commit cd659fc86f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View File

@ -97,10 +97,15 @@ export function createHydrationFunctions(
isFragmentStart isFragmentStart
) )
const { type, ref, shapeFlag } = vnode const { type, ref, shapeFlag, patchFlag } = vnode
const domType = node.nodeType const domType = node.nodeType
vnode.el = node vnode.el = node
if (patchFlag === PatchFlags.BAIL) {
optimized = false
vnode.dynamicChildren = null
}
let nextNode: Node | null = null let nextNode: Node | null = null
switch (type) { switch (type) {
case Text: case Text:

View File

@ -122,13 +122,13 @@ export function defineCustomElement(options: {
export function defineCustomElement( export function defineCustomElement(
options: any, options: any,
hydate?: RootHydrateFunction hydrate?: RootHydrateFunction
): VueElementConstructor { ): VueElementConstructor {
const Comp = defineComponent(options as any) const Comp = defineComponent(options as any)
class VueCustomElement extends VueElement { class VueCustomElement extends VueElement {
static def = Comp static def = Comp
constructor(initialProps?: Record<string, any>) { constructor(initialProps?: Record<string, any>) {
super(Comp, initialProps, hydate) super(Comp, initialProps, hydrate)
} }
} }