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('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)
|
||||
instanceProxy.baz = 1
|
||||
expect('baz' in instanceProxy).toBe(true)
|
||||
|
@ -248,11 +248,11 @@ if (__COMPAT__) {
|
||||
}
|
||||
|
||||
const enum AccessTypes {
|
||||
OTHER,
|
||||
SETUP,
|
||||
DATA,
|
||||
PROPS,
|
||||
CONTEXT,
|
||||
OTHER
|
||||
CONTEXT
|
||||
}
|
||||
|
||||
export interface ComponentRenderContext {
|
||||
@ -437,7 +437,7 @@ export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
|
||||
) {
|
||||
let normalizedProps
|
||||
return (
|
||||
accessCache![key] !== undefined ||
|
||||
!!accessCache![key] ||
|
||||
(data !== EMPTY_OBJ && hasOwn(data, key)) ||
|
||||
(setupState !== EMPTY_OBJ && hasOwn(setupState, key)) ||
|
||||
((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||
|
||||
|
Loading…
Reference in New Issue
Block a user