fix(runtime-core): should preserve props casing when component has no declared props
close #583
This commit is contained in:
parent
8aca71b354
commit
bb6a346996
@ -32,7 +32,8 @@ describe('attribute fallthrough', () => {
|
||||
id: 'test',
|
||||
class: 'c' + count.value,
|
||||
style: { color: count.value ? 'red' : 'green' },
|
||||
onClick: inc
|
||||
onClick: inc,
|
||||
'data-id': 1
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -66,6 +67,7 @@ describe('attribute fallthrough', () => {
|
||||
expect(node.getAttribute('class')).toBe('c2 c0')
|
||||
expect(node.style.color).toBe('green')
|
||||
expect(node.style.fontWeight).toBe('bold')
|
||||
expect(node.dataset.id).toBe('1')
|
||||
node.dispatchEvent(new CustomEvent('click'))
|
||||
expect(click).toHaveBeenCalled()
|
||||
|
||||
|
@ -127,13 +127,17 @@ export function resolveProps(
|
||||
if (key === 'key' || key === 'ref') continue
|
||||
// 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)) {
|
||||
// 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]
|
||||
if (hasDeclaredProps) {
|
||||
const camelKey = camelize(key)
|
||||
if (hasOwn(options, camelKey)) {
|
||||
setProp(camelKey, rawProps[key])
|
||||
} else {
|
||||
// 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])
|
||||
setProp(key, rawProps[key])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user