From 8dbc2b47dd8fea4a953fb05057edb47122e2dcb7 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 31 Dec 2020 00:19:23 -0500 Subject: [PATCH] fix(plugin-vue): custom block prev handling --- packages/plugin-vue/src/handleHotUpdate.ts | 31 +++++++++++----------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/packages/plugin-vue/src/handleHotUpdate.ts b/packages/plugin-vue/src/handleHotUpdate.ts index 59374ca1ccd40d..bbd126ba4cfbfb 100644 --- a/packages/plugin-vue/src/handleHotUpdate.ts +++ b/packages/plugin-vue/src/handleHotUpdate.ts @@ -103,24 +103,25 @@ export async function handleHotUpdate( // custom blocks update causes a reload // because the custom block contents is changed and it may be used in JS. - for (let i = 0; i < nextCustoms.length; i++) { - const prev = prevCustoms[i] - const next = nextCustoms[i] - if (!prev || !isEqualBlock(prev, next)) { - const mod = modules.find((m) => - m.url.includes(`type=${prev.type}&index=${i}`) - ) - if (mod) { - affectedModules.add(mod) - } else { - affectedModules.add(mainModule) + if (prevCustoms.length !== nextCustoms.length) { + // block rmeoved/added, force reload + affectedModules.add(mainModule) + } else { + for (let i = 0; i < nextCustoms.length; i++) { + const prev = prevCustoms[i] + const next = nextCustoms[i] + if (!prev || !isEqualBlock(prev, next)) { + const mod = modules.find((m) => + m.url.includes(`type=${prev.type}&index=${i}`) + ) + if (mod) { + affectedModules.add(mod) + } else { + affectedModules.add(mainModule) + } } } } - if (prevCustoms.length > nextCustoms.length) { - // block rmeoved, force reload - affectedModules.add(mainModule) - } let updateType = [] if (needRerender) {