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',
|
id: 'test',
|
||||||
class: 'c' + count.value,
|
class: 'c' + count.value,
|
||||||
style: { color: count.value ? 'red' : 'green' },
|
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.getAttribute('class')).toBe('c2 c0')
|
||||||
expect(node.style.color).toBe('green')
|
expect(node.style.color).toBe('green')
|
||||||
expect(node.style.fontWeight).toBe('bold')
|
expect(node.style.fontWeight).toBe('bold')
|
||||||
|
expect(node.dataset.id).toBe('1')
|
||||||
node.dispatchEvent(new CustomEvent('click'))
|
node.dispatchEvent(new CustomEvent('click'))
|
||||||
expect(click).toHaveBeenCalled()
|
expect(click).toHaveBeenCalled()
|
||||||
|
|
||||||
|
@ -127,13 +127,17 @@ export function resolveProps(
|
|||||||
if (key === 'key' || key === 'ref') continue
|
if (key === 'key' || key === 'ref') continue
|
||||||
// prop option names are camelized during normalization, so to support
|
// prop option names are camelized during normalization, so to support
|
||||||
// kebab -> camel conversion here we need to camelize the key.
|
// kebab -> camel conversion here we need to camelize the key.
|
||||||
|
if (hasDeclaredProps) {
|
||||||
const camelKey = camelize(key)
|
const camelKey = camelize(key)
|
||||||
if (hasDeclaredProps && !hasOwn(options, camelKey)) {
|
if (hasOwn(options, camelKey)) {
|
||||||
|
setProp(camelKey, rawProps[key])
|
||||||
|
} else {
|
||||||
// Any non-declared props are put into a separate `attrs` object
|
// Any non-declared props are put into a separate `attrs` object
|
||||||
// for spreading. Make sure to preserve original key casing
|
// for spreading. Make sure to preserve original key casing
|
||||||
;(attrs || (attrs = {}))[key] = rawProps[key]
|
;(attrs || (attrs = {}))[key] = rawProps[key]
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
setProp(camelKey, rawProps[key])
|
setProp(key, rawProps[key])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user