fix(runtime-core): fix boolean props validation
This commit is contained in:
parent
b716a906fe
commit
3b282e7e3c
@ -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()
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user