From: Evan You Date: Sat, 27 Mar 2021 15:16:39 +0000 (-0400) Subject: fix(runtime-core): fix kebab-case prop required warning X-Git-Tag: v3.0.9~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2121c32e228376c01de4335e2fcc645b7581cd4b;p=thirdparty%2Fvuejs%2Fcore.git fix(runtime-core): fix kebab-case prop required warning fix #3495 ref #3363 --- diff --git a/packages/runtime-core/__tests__/componentProps.spec.ts b/packages/runtime-core/__tests__/componentProps.spec.ts index 7c90a54a12..a97c9d4819 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 39c15471f8..3ea727ddcc 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)) + ) } }