fix(dx): warn against reserved keys as prop name

close #10281
This commit is contained in:
Evan You 2024-02-09 08:47:06 +08:00
parent dfb271a293
commit 77a804b1d0
2 changed files with 20 additions and 1 deletions

View File

@ -729,4 +729,23 @@ describe('component props', () => {
expect(Object.keys(props.msg).length).toBe(1)
})
test('should warn against reserved prop names', () => {
const Comp = defineComponent({
props: {
key: String,
ref: String,
$foo: String,
},
render() {},
})
const root = nodeOps.createElement('div')
render(h(Comp, { msg: 'test' }), root)
expect(`Invalid prop name: "key"`).toHaveBeenWarned()
expect(`Invalid prop name: "ref"`).toHaveBeenWarned()
expect(`Invalid prop name: "$foo"`).toHaveBeenWarned()
})
})

View File

@ -586,7 +586,7 @@ export function normalizePropsOptions(
}
function validatePropName(key: string) {
if (key[0] !== '$') {
if (key[0] !== '$' && !isReservedProp(key)) {
return true
} else if (__DEV__) {
warn(`Invalid prop name: "${key}" is a reserved property.`)