From e87ab1891455f16a3451a6536e50b6bf3450a584 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Sat, 8 Dec 2018 19:36:18 -0500 Subject: [PATCH] hydration fix --- .../wrappers/InlineComponent/index.ts | 1 + src/internal/Component.js | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/compile/render-dom/wrappers/InlineComponent/index.ts b/src/compile/render-dom/wrappers/InlineComponent/index.ts index 54905f815a..0255a195fb 100644 --- a/src/compile/render-dom/wrappers/InlineComponent/index.ts +++ b/src/compile/render-dom/wrappers/InlineComponent/index.ts @@ -348,6 +348,7 @@ export default class InlineComponentWrapper extends Wrapper { ${munged_handlers} ${this.fragment && this.fragment.nodes.map(child => child.remount(name))} + ${name}.$$.fragment.c(); @mount_component(${name}, ${updateMountNode}, ${anchor}); ${this.node.handlers.map(handler => deindent` diff --git a/src/internal/Component.js b/src/internal/Component.js index 89151bb637..cd90920d75 100644 --- a/src/internal/Component.js +++ b/src/internal/Component.js @@ -9,16 +9,10 @@ export function bind(component, name, callback) { callback(component.$$.get()[name]); } -export function mount_component(component, target, anchor, hydrate) { +export function mount_component(component, target, anchor) { const { fragment, refs, inject_refs, on_mount, on_destroy, after_render } = component.$$; - if (hydrate) { - fragment.l(children(target)); - fragment.m(target, anchor); // TODO can we avoid moving DOM? - } else { - fragment.c(); - fragment[fragment.i ? 'i' : 'm'](target, anchor); - } + fragment[fragment.i ? 'i' : 'm'](target, anchor); inject_refs(refs); @@ -104,7 +98,14 @@ export function init(component, options, define, create_fragment, not_equal) { if (options.target) { intro.enabled = !!options.intro; - mount_component(component, options.target, options.anchor, options.hydrate); + + if (options.hydrate) { + component.$$.fragment.l(children(options.target)); + } else { + component.$$.fragment.c(); + } + + mount_component(component, options.target, options.anchor); flush(); intro.enabled = true; }