From 2dc1ca2aaf122fc84f72796fb28af806abfc3a61 Mon Sep 17 00:00:00 2001 From: Julien Barbay Date: Wed, 14 Nov 2018 19:50:10 +0900 Subject: [PATCH] extend refresh behavior to the whole component --- app/vue/src/client/preview/render.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/app/vue/src/client/preview/render.js b/app/vue/src/client/preview/render.js index d73d451a065..cc5dd0d7235 100644 --- a/app/vue/src/client/preview/render.js +++ b/app/vue/src/client/preview/render.js @@ -29,19 +29,27 @@ export default function render({ showMain(); - const props = Object.entries(component.props) + const proxy = Object.entries(component.props) .map(([name, def]) => ({ [name]: def.default })) - .reduce((wrapper, prop) => ({ ...wrapper, ...prop }), {}); + .reduce((wrap, prop) => ({ ...wrap, ...prop }), {}); + + // at component creation || refresh by HMR + if (!root || !forceRender) { + if (root) root.$destroy(); - if (!root) { root = new Vue({ el: '#root', + beforeCreate() { + this.proxy = proxy; + }, + render(h) { - return h('div', { attrs: { id: 'root' } }, [h(component, { props: this.proxy || null })]); + const props = this.proxy; + return h('div', { attrs: { id: 'root' } }, [h(component, { props })]); }, }); - } else if (forceRender) { - root.proxy = props; + } else { + root.proxy = proxy; root.$forceUpdate(); } }