Browse Source

fix(runtime-core): fix boolean props validation

Evan You 6 years ago
parent
commit
3b282e7e3c

+ 0 - 4
packages/runtime-core/__tests__/component.spec.ts

@@ -6,11 +6,8 @@ import {
   nextTick,
   defineComponent
 } from '@vue/runtime-test'
-import { mockWarn } from '@vue/shared'
 
 describe('renderer: component', () => {
-  mockWarn()
-
   test.todo('should work')
 
   test.todo('shouldUpdateComponent')
@@ -43,7 +40,6 @@ describe('renderer: component', () => {
       expect(b1).toBe(true)
       expect(b2).toBe(true)
       expect(b3).toBe('')
-      expect('type check failed for prop "b1"').toHaveBeenWarned()
     })
   })
 

+ 2 - 9
packages/runtime-core/src/componentProps.ts

@@ -156,7 +156,6 @@ export function resolveProps(
       const key = needCastKeys[i]
       let opt = options[key]
       if (opt == null) continue
-      const isAbsent = !hasOwn(props, key)
       const hasDefault = hasOwn(opt, 'default')
       const currentValue = props[key]
       // default values
@@ -166,7 +165,7 @@ export function resolveProps(
       }
       // boolean casting
       if (opt[BooleanFlags.shouldCast]) {
-        if (isAbsent && !hasDefault) {
+        if (!hasOwn(props, key) && !hasDefault) {
           setProp(key, false)
         } else if (
           opt[BooleanFlags.shouldCastTrue] &&
@@ -181,13 +180,7 @@ export function resolveProps(
       for (const key in options) {
         let opt = options[key]
         if (opt == null) continue
-        let rawValue
-        if (!(key in rawProps) && hyphenate(key) in rawProps) {
-          rawValue = rawProps[hyphenate(key)]
-        } else {
-          rawValue = rawProps[key]
-        }
-        validateProp(key, toRaw(rawValue), opt, !hasOwn(props, key))
+        validateProp(key, props[key], opt, !hasOwn(props, key))
       }
     }
   } else {