From ca7daefaa15a192046d22d060220cd595a6a275f Mon Sep 17 00:00:00 2001 From: blackie Date: Fri, 8 Jul 2022 09:44:41 +0800 Subject: [PATCH] fix(ssr/reactivity): fix array setting error at created in ssr [#12632] (#12633) fix #12632 --- packages/server-renderer/test/ssr-reactivity.spec.ts | 4 ++++ src/core/observer/index.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/server-renderer/test/ssr-reactivity.spec.ts b/packages/server-renderer/test/ssr-reactivity.spec.ts index f9b145c7740..773fa9dd650 100644 --- a/packages/server-renderer/test/ssr-reactivity.spec.ts +++ b/packages/server-renderer/test/ssr-reactivity.spec.ts @@ -93,6 +93,10 @@ describe('SSR Reactive', () => { set(state.value, 1, {}) expect(isReactive(state.value[1])).toBe(true) + + const rawArr = [] + set(rawArr, 1, {}) + expect(isReactive(rawArr[1])).toBe(false) }) // #550 diff --git a/src/core/observer/index.ts b/src/core/observer/index.ts index 004a65fe6b5..84744dd85f9 100644 --- a/src/core/observer/index.ts +++ b/src/core/observer/index.ts @@ -241,7 +241,7 @@ export function set( target.length = Math.max(target.length, key) target.splice(key, 1, val) // when mocking for SSR, array methods are not hijacked - if (!ob.shallow && ob.mock) { + if (ob && !ob.shallow && ob.mock) { observe(val, false, true) } return val