for (const key in rawCurrentProps) {
if (
!rawProps ||
- (
- // for camelCase
- !hasOwn(rawProps, key) &&
+ // for camelCase
+ (!hasOwn(rawProps, key) &&
// it's possible the original props was passed in as kebab-case
// and converted to camelCase (#955)
((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))
) {
if (options) {
- if (rawPrevProps && (
+ if (
+ rawPrevProps &&
// for camelCase
- rawPrevProps[key] !== undefined ||
- // for kebab-case
- rawPrevProps[kebabKey!] !== undefined)) {
+ (rawPrevProps[key] !== undefined ||
+ // for kebab-case
+ rawPrevProps[kebabKey!] !== undefined)
+ ) {
props[key] = resolvePropValue(
options,
rawProps || EMPTY_OBJ,
let camelKey
if (options && hasOwn(options, (camelKey = camelize(key)))) {
props[camelKey] = value
- } else if (!emits || !isEmitListener(emits, key)) {
+ } else if (
+ (!emits || !isEmitListener(emits, key)) &&
+ // ignore v-model listeners
+ !key.startsWith(`onUpdate:`)
+ ) {
// Any non-declared (either as a prop or an emitted event) props are put
// into a separate `attrs` object for spreading. Make sure to preserve
// original key casing