fix(runtime-core): fix component public instance has check for accessed non-existent properties
close #4962
This commit is contained in:
parent
89b2f924fc
commit
aac0466cb8
@ -195,6 +195,11 @@ describe('component: proxy', () => {
|
|||||||
expect('$foobar' in instanceProxy).toBe(false)
|
expect('$foobar' in instanceProxy).toBe(false)
|
||||||
expect('baz' in instanceProxy).toBe(false)
|
expect('baz' in instanceProxy).toBe(false)
|
||||||
|
|
||||||
|
// #4962 triggering getter should not cause non-existent property to
|
||||||
|
// pass the has check
|
||||||
|
instanceProxy.baz
|
||||||
|
expect('baz' in instanceProxy).toBe(false)
|
||||||
|
|
||||||
// set non-existent (goes into proxyTarget sink)
|
// set non-existent (goes into proxyTarget sink)
|
||||||
instanceProxy.baz = 1
|
instanceProxy.baz = 1
|
||||||
expect('baz' in instanceProxy).toBe(true)
|
expect('baz' in instanceProxy).toBe(true)
|
||||||
|
@ -248,11 +248,11 @@ if (__COMPAT__) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const enum AccessTypes {
|
const enum AccessTypes {
|
||||||
|
OTHER,
|
||||||
SETUP,
|
SETUP,
|
||||||
DATA,
|
DATA,
|
||||||
PROPS,
|
PROPS,
|
||||||
CONTEXT,
|
CONTEXT
|
||||||
OTHER
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ComponentRenderContext {
|
export interface ComponentRenderContext {
|
||||||
@ -437,7 +437,7 @@ export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
|
|||||||
) {
|
) {
|
||||||
let normalizedProps
|
let normalizedProps
|
||||||
return (
|
return (
|
||||||
accessCache![key] !== undefined ||
|
!!accessCache![key] ||
|
||||||
(data !== EMPTY_OBJ && hasOwn(data, key)) ||
|
(data !== EMPTY_OBJ && hasOwn(data, key)) ||
|
||||||
(setupState !== EMPTY_OBJ && hasOwn(setupState, key)) ||
|
(setupState !== EMPTY_OBJ && hasOwn(setupState, key)) ||
|
||||||
((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||
|
((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user