From 9050b2011c919b9514bbcfd0b659aea6ab102035 Mon Sep 17 00:00:00 2001 From: Ivan Shmidt Date: Tue, 16 Jun 2020 12:59:45 +0200 Subject: [PATCH] fix: hmr memoize --- packages/backend-common/src/hot.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/backend-common/src/hot.ts b/packages/backend-common/src/hot.ts index f684b5cba1..3d4252b378 100644 --- a/packages/backend-common/src/hot.ts +++ b/packages/backend-common/src/hot.ts @@ -66,11 +66,11 @@ export function useHotMemoize( } // Let's store data per module based on the order of the code invocation - const index = _module.hot.data?.[CURRENT_HOT_MEMOIZE_INDEX_KEY]; + const index = _module.hot.data[CURRENT_HOT_MEMOIZE_INDEX_KEY]; // Increasing the counter after each call _module.hot.data[CURRENT_HOT_MEMOIZE_INDEX_KEY] += 1; - const prevValue = _module.hot.data?.[index]; + const prevValue = _module.hot.data[index]; const createDisposeHandler = (value: any) => (data: { [key: number]: any; [indexKey: string]: number; @@ -78,7 +78,11 @@ export function useHotMemoize( // Preserving the value through the HMR process data[index] = value; // Decreasing the counter after each handler - data[CURRENT_HOT_MEMOIZE_INDEX_KEY] = index - 1; + data[CURRENT_HOT_MEMOIZE_INDEX_KEY] = + // First hot update is still different, need to populate the data + typeof data[CURRENT_HOT_MEMOIZE_INDEX_KEY] === 'undefined' + ? _module.hot!.data[CURRENT_HOT_MEMOIZE_INDEX_KEY] - 1 + : data[CURRENT_HOT_MEMOIZE_INDEX_KEY] - 1; }; if (prevValue) {