Explorar el Código

fix(ssr/reactivity): fix array setting error at created in ssr [#12632] (#12633)

fix #12632
blackie hace 3 años
padre
commit
ca7daefaa1

+ 4 - 0
packages/server-renderer/test/ssr-reactivity.spec.ts

@@ -93,6 +93,10 @@ describe('SSR Reactive', () => {
 
 
     set(state.value, 1, {})
     set(state.value, 1, {})
     expect(isReactive(state.value[1])).toBe(true)
     expect(isReactive(state.value[1])).toBe(true)
+
+    const rawArr = []
+    set(rawArr, 1, {})
+    expect(isReactive(rawArr[1])).toBe(false)
   })
   })
 
 
   // #550
   // #550

+ 1 - 1
src/core/observer/index.ts

@@ -241,7 +241,7 @@ export function set(
     target.length = Math.max(target.length, key)
     target.length = Math.max(target.length, key)
     target.splice(key, 1, val)
     target.splice(key, 1, val)
     // when mocking for SSR, array methods are not hijacked
     // when mocking for SSR, array methods are not hijacked
-    if (!ob.shallow && ob.mock) {
+    if (ob && !ob.shallow && ob.mock) {
       observe(val, false, true)
       observe(val, false, true)
     }
     }
     return val
     return val