fix(runtime-core): fix resolving inheritAttrs from mixins (#3742)
fix #3741
This commit is contained in:
@@ -567,17 +567,14 @@ export function applyOptions(
|
||||
errorCaptured,
|
||||
serverPrefetch,
|
||||
// public API
|
||||
expose
|
||||
expose,
|
||||
inheritAttrs
|
||||
} = options
|
||||
|
||||
const publicThis = instance.proxy!
|
||||
const ctx = instance.ctx
|
||||
const globalMixins = instance.appContext.mixins
|
||||
|
||||
if (asMixin && render && instance.render === NOOP) {
|
||||
instance.render = render as InternalRenderFunction
|
||||
}
|
||||
|
||||
// applyOptions is called non-as-mixin once per instance
|
||||
if (!asMixin) {
|
||||
shouldCacheAccess = false
|
||||
@@ -755,17 +752,6 @@ export function applyOptions(
|
||||
})
|
||||
}
|
||||
|
||||
// asset options.
|
||||
// To reduce memory usage, only components with mixins or extends will have
|
||||
// resolved asset registry attached to instance.
|
||||
if (asMixin) {
|
||||
resolveInstanceAssets(instance, options, COMPONENTS)
|
||||
resolveInstanceAssets(instance, options, DIRECTIVES)
|
||||
if (__COMPAT__ && isCompatEnabled(DeprecationTypes.FILTERS, instance)) {
|
||||
resolveInstanceAssets(instance, options, FILTERS)
|
||||
}
|
||||
}
|
||||
|
||||
// lifecycle options
|
||||
if (!asMixin) {
|
||||
callSyncHook(
|
||||
@@ -831,6 +817,27 @@ export function applyOptions(
|
||||
warn(`The \`expose\` option is ignored when used in mixins.`)
|
||||
}
|
||||
}
|
||||
|
||||
// options that are handled when creating the instance but also need to be
|
||||
// applied from mixins
|
||||
if (asMixin) {
|
||||
if (render && instance.render === NOOP) {
|
||||
instance.render = render as InternalRenderFunction
|
||||
}
|
||||
|
||||
if (inheritAttrs != null && instance.type.inheritAttrs == null) {
|
||||
instance.inheritAttrs = inheritAttrs
|
||||
}
|
||||
|
||||
// asset options.
|
||||
// To reduce memory usage, only components with mixins or extends will have
|
||||
// resolved asset registry attached to instance.
|
||||
resolveInstanceAssets(instance, options, COMPONENTS)
|
||||
resolveInstanceAssets(instance, options, DIRECTIVES)
|
||||
if (__COMPAT__ && isCompatEnabled(DeprecationTypes.FILTERS, instance)) {
|
||||
resolveInstanceAssets(instance, options, FILTERS)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function resolveInstanceAssets(
|
||||
|
||||
Reference in New Issue
Block a user