diff --git a/src/compile/render-dom/index.ts b/src/compile/render-dom/index.ts index fe584a7d45..51ad6cb518 100644 --- a/src/compile/render-dom/index.ts +++ b/src/compile/render-dom/index.ts @@ -139,7 +139,7 @@ export default function dom( } set ${x.as}(value) { - this.$$set('${x.name}', value); + this.$set({ ${x.name}: value }); @flush(); } `)} diff --git a/src/compile/render-dom/wrappers/InlineComponent/index.ts b/src/compile/render-dom/wrappers/InlineComponent/index.ts index 30339e2d50..5b589ac957 100644 --- a/src/compile/render-dom/wrappers/InlineComponent/index.ts +++ b/src/compile/render-dom/wrappers/InlineComponent/index.ts @@ -283,7 +283,7 @@ export default class InlineComponentWrapper extends Wrapper { _bind(changed, childState) { var ${initialisers}; ${builder} - ${hasLocalBindings && `#component._set(newState);`} + ${hasLocalBindings && `#component.$set(newState);`} ${name_updating} = {}; } `); @@ -406,7 +406,7 @@ export default class InlineComponentWrapper extends Wrapper { if (updates.length) { block.builders.update.addBlock(deindent` else if (${switch_value}) { - ${name}._set(${name_changes}); + ${name}.$set(${name_changes}); ${this.node.bindings.length && `${name_updating} = {};`} } `); @@ -452,7 +452,7 @@ export default class InlineComponentWrapper extends Wrapper { if (updates.length) { block.builders.update.addBlock(deindent` ${updates} - ${name}._set(${name_changes}); + ${name}.$set(${name_changes}); ${this.node.bindings.length && `${name_updating} = {};`} `); } diff --git a/src/internal/SvelteComponent.js b/src/internal/SvelteComponent.js index 43788e3413..cbf0a39602 100644 --- a/src/internal/SvelteComponent.js +++ b/src/internal/SvelteComponent.js @@ -67,13 +67,14 @@ export class SvelteComponent { const ondestroy = this.$$onmount.map(fn => fn()).filter(Boolean); this.$$ondestroy.push(...ondestroy); - this.$$onmount = null; + this.$$onmount = []; } - $$set(key, value) { - this.$$.inject_props({ [key]: value }); + $set(values) { + this.$$.inject_props(values); run_all(this.$$onprops); - this.$$make_dirty(key); + + for (const key in values) this.$$make_dirty(key); } $$update() {