fix(runtime-core): ensure consistent $options merge behavior with 2.x (#1986)

close #1978 , close #1979
This commit is contained in:
ᴜɴвʏтᴇ
2020-08-31 20:04:06 -05:00
committed by GitHub
parent 8ed0b342d4
commit 706b52aadd
3 changed files with 51 additions and 4 deletions

View File

@@ -767,10 +767,8 @@ export function resolveMergedOptions(
const globalMixins = instance.appContext.mixins
if (!globalMixins.length && !mixins && !extendsOptions) return raw
const options = {}
globalMixins.forEach(m => mergeOptions(options, m, instance))
extendsOptions && mergeOptions(options, extendsOptions, instance)
mixins && mixins.forEach(m => mergeOptions(options, m, instance))
mergeOptions(options, raw, instance)
globalMixins.forEach(m => mergeOptions(options, m, instance))
return (raw.__merged = options)
}
@@ -783,4 +781,9 @@ function mergeOptions(to: any, from: any, instance: ComponentInternalInstance) {
to[key] = from[key]
}
}
const { mixins, extends: extendsOptions } = from
extendsOptions && mergeOptions(to, extendsOptions, instance)
mixins &&
mixins.forEach((m: ComponentOptionsMixin) => mergeOptions(to, m, instance))
}