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.
This commit is contained in:
parent
48f0d2944f
commit
73117f6b5b
@ -295,6 +295,10 @@ describe('component props', () => {
|
|||||||
;(instance!.proxy as any).foo = 2
|
;(instance!.proxy as any).foo = 2
|
||||||
}).toThrow(TypeError)
|
}).toThrow(TypeError)
|
||||||
expect(`Attempting to mutate prop "foo"`).toHaveBeenWarned()
|
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', () => {
|
test('merging props from mixins and extends', () => {
|
||||||
|
@ -368,7 +368,7 @@ export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
|
|||||||
setupState[key] = value
|
setupState[key] = value
|
||||||
} else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
} else if (data !== EMPTY_OBJ && hasOwn(data, key)) {
|
||||||
data[key] = value
|
data[key] = value
|
||||||
} else if (key in instance.props) {
|
} else if (hasOwn(instance.props, key)) {
|
||||||
__DEV__ &&
|
__DEV__ &&
|
||||||
warn(
|
warn(
|
||||||
`Attempting to mutate prop "${key}". Props are readonly.`,
|
`Attempting to mutate prop "${key}". Props are readonly.`,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user