for (const key in rawProps) {
// key, ref are reserved
if (isReservedProp(key)) continue
- const camelKey = __RUNTIME_COMPILE__ ? camelize(key) : key
- // any non-declared data are put into a separate `attrs` object
- // for spreading
+ // prop option names are camelized during normalization, so to support
+ // kebab -> camel conversion here we need to camelize the key.
+ const camelKey = camelize(key)
if (hasDeclaredProps && !hasOwn(options, camelKey)) {
- ;(attrs || (attrs = {}))[camelKey] = rawProps[key]
+ // Any non-declared props are put into a separate `attrs` object
+ // for spreading. Make sure to preserve original key casing
+ ;(attrs || (attrs = {}))[key] = rawProps[key]
} else {
setProp(camelKey, rawProps[key])
}
}
// runtime validation
if (__DEV__ && rawProps) {
- let rawValue = rawProps[key]
- if (__RUNTIME_COMPILE__ && !(key in rawProps)) {
+ let rawValue
+ if (!(key in rawProps) && hyphenate(key) in rawProps) {
rawValue = rawProps[hyphenate(key)]
+ } else {
+ rawValue = rawProps[key]
}
validateProp(key, toRaw(rawValue), opt, isAbsent)
}