ソースを参照

fix(runtime-core): allow overriding properties other than props (#3105)

This is useful for testing, as Jest can't spy on an object without `hasOwnProperty`.
VTU can add it, but this commit is needed first.
Cédric Exbrayat 5 年 前
コミット
73117f6b5b

+ 4 - 0
packages/runtime-core/__tests__/componentProps.spec.ts

@@ -295,6 +295,10 @@ describe('component props', () => {
       ;(instance!.proxy as any).foo = 2
     }).toThrow(TypeError)
     expect(`Attempting to mutate prop "foo"`).toHaveBeenWarned()
+    // should not throw when overriding properties other than props
+    expect(() => {
+      ;(instance!.proxy as any).hasOwnProperty = () => {}
+    }).not.toThrow(TypeError)
   })
 
   test('merging props from mixins and extends', () => {

+ 1 - 1
packages/runtime-core/src/componentPublicInstance.ts

@@ -368,7 +368,7 @@ export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
       setupState[key] = value
     } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
       data[key] = value
-    } else if (key in instance.props) {
+    } else if (hasOwn(instance.props, key)) {
       __DEV__ &&
         warn(
           `Attempting to mutate prop "${key}". Props are readonly.`,