From 71448b008fc4517ab0036b98121a0346df75880e Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Wed, 27 Oct 2021 15:35:43 +0200 Subject: [PATCH] fix(ssr): make skipHydrate compatible with @vue/composition-api --- packages/pinia/src/store.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/pinia/src/store.ts b/packages/pinia/src/store.ts index 0936d67e..9ab67fa0 100644 --- a/packages/pinia/src/store.ts +++ b/packages/pinia/src/store.ts @@ -74,13 +74,19 @@ function mergeReactiveObjects( } const skipHydrateSymbol = __DEV__ ? Symbol('pinia:skipHydration') : Symbol() +const skipHydrateMap = /*#__PURE__*/ new WeakMap() export function skipHydrate(obj: T): T { - return Object.defineProperty(obj, skipHydrateSymbol, {}) + return isVue2 + ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work... + skipHydrateMap.set(obj, 1) && obj + : Object.defineProperty(obj, skipHydrateSymbol, {}) } function shouldHydrate(obj: any) { - return !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol) + return isVue2 + ? skipHydrateMap.has(obj) + : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol) } const { assign } = Object -- 2.47.3