From 2121c32e228376c01de4335e2fcc645b7581cd4b Mon Sep 17 00:00:00 2001 From: Evan You Date: Sat, 27 Mar 2021 11:16:39 -0400 Subject: [PATCH] fix(runtime-core): fix kebab-case prop required warning fix #3495 ref #3363 --- .../__tests__/componentProps.spec.ts | 19 +++++++++++++++++++ packages/runtime-core/src/componentProps.ts | 7 ++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/runtime-core/__tests__/componentProps.spec.ts b/packages/runtime-core/__tests__/componentProps.spec.ts index 7c90a54a12b..a97c9d48190 100644 --- a/packages/runtime-core/__tests__/componentProps.spec.ts +++ b/packages/runtime-core/__tests__/componentProps.spec.ts @@ -319,6 +319,25 @@ describe('component props', () => { expect(`Missing required prop: "num"`).toHaveBeenWarned() }) + // #3495 + test('should not warn required props using kebab-case', async () => { + const Comp = { + props: { + fooBar: { type: String, required: true } + }, + setup() { + return () => null + } + } + render( + h(Comp, { + 'foo-bar': 'hello' + }), + nodeOps.createElement('div') + ) + expect(`Missing required prop: "fooBar"`).not.toHaveBeenWarned() + }) + test('merging props from mixins and extends', () => { let setupProps: any let renderProxy: any diff --git a/packages/runtime-core/src/componentProps.ts b/packages/runtime-core/src/componentProps.ts index 39c15471f80..3ea727ddcc3 100644 --- a/packages/runtime-core/src/componentProps.ts +++ b/packages/runtime-core/src/componentProps.ts @@ -480,7 +480,12 @@ function validateProps( for (const key in options) { let opt = options[key] if (opt == null) continue - validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key)) + validateProp( + key, + resolvedValues[key], + opt, + !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)) + ) } }