fix(runtome-core): do not cache property access in beforeCreate hook

fix #1756
This commit is contained in:
Evan You 2020-08-03 17:04:45 -04:00
parent d4c17fb48b
commit f6afe7000e
2 changed files with 7 additions and 2 deletions

View File

@ -364,6 +364,8 @@ function createDuplicateChecker() {
type DataFn = (vm: ComponentPublicInstance) => any
export let isInBeforeCreate = false
export function applyOptions(
instance: ComponentInternalInstance,
options: ComponentOptions,
@ -407,7 +409,9 @@ export function applyOptions(
// applyOptions is called non-as-mixin once per instance
if (!asMixin) {
isInBeforeCreate = true
callSyncHook('beforeCreate', options, publicThis, globalMixins)
isInBeforeCreate = false
// global mixins are applied first
applyMixins(instance, globalMixins, deferredData, deferredWatch)
}

View File

@ -26,7 +26,8 @@ import {
ComponentOptionsMixin,
OptionTypesType,
OptionTypesKeys,
resolveMergedOptions
resolveMergedOptions,
isInBeforeCreate
} from './componentOptions'
import { normalizePropsOptions } from './componentProps'
import { EmitsOptions, EmitFn } from './componentEmits'
@ -254,7 +255,7 @@ export const PublicInstanceProxyHandlers: ProxyHandler<any> = {
} else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {
accessCache![key] = AccessTypes.CONTEXT
return ctx[key]
} else {
} else if (!__FEATURE_OPTIONS_API__ || !isInBeforeCreate) {
accessCache![key] = AccessTypes.OTHER
}
}