fix(runtime-core): fix boolean props validation
This commit is contained in:
parent
b716a906fe
commit
3b282e7e3c
@ -6,11 +6,8 @@ import {
|
|||||||
nextTick,
|
nextTick,
|
||||||
defineComponent
|
defineComponent
|
||||||
} from '@vue/runtime-test'
|
} from '@vue/runtime-test'
|
||||||
import { mockWarn } from '@vue/shared'
|
|
||||||
|
|
||||||
describe('renderer: component', () => {
|
describe('renderer: component', () => {
|
||||||
mockWarn()
|
|
||||||
|
|
||||||
test.todo('should work')
|
test.todo('should work')
|
||||||
|
|
||||||
test.todo('shouldUpdateComponent')
|
test.todo('shouldUpdateComponent')
|
||||||
@ -43,7 +40,6 @@ describe('renderer: component', () => {
|
|||||||
expect(b1).toBe(true)
|
expect(b1).toBe(true)
|
||||||
expect(b2).toBe(true)
|
expect(b2).toBe(true)
|
||||||
expect(b3).toBe('')
|
expect(b3).toBe('')
|
||||||
expect('type check failed for prop "b1"').toHaveBeenWarned()
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -156,7 +156,6 @@ export function resolveProps(
|
|||||||
const key = needCastKeys[i]
|
const key = needCastKeys[i]
|
||||||
let opt = options[key]
|
let opt = options[key]
|
||||||
if (opt == null) continue
|
if (opt == null) continue
|
||||||
const isAbsent = !hasOwn(props, key)
|
|
||||||
const hasDefault = hasOwn(opt, 'default')
|
const hasDefault = hasOwn(opt, 'default')
|
||||||
const currentValue = props[key]
|
const currentValue = props[key]
|
||||||
// default values
|
// default values
|
||||||
@ -166,7 +165,7 @@ export function resolveProps(
|
|||||||
}
|
}
|
||||||
// boolean casting
|
// boolean casting
|
||||||
if (opt[BooleanFlags.shouldCast]) {
|
if (opt[BooleanFlags.shouldCast]) {
|
||||||
if (isAbsent && !hasDefault) {
|
if (!hasOwn(props, key) && !hasDefault) {
|
||||||
setProp(key, false)
|
setProp(key, false)
|
||||||
} else if (
|
} else if (
|
||||||
opt[BooleanFlags.shouldCastTrue] &&
|
opt[BooleanFlags.shouldCastTrue] &&
|
||||||
@ -181,13 +180,7 @@ export function resolveProps(
|
|||||||
for (const key in options) {
|
for (const key in options) {
|
||||||
let opt = options[key]
|
let opt = options[key]
|
||||||
if (opt == null) continue
|
if (opt == null) continue
|
||||||
let rawValue
|
validateProp(key, props[key], opt, !hasOwn(props, key))
|
||||||
if (!(key in rawProps) && hyphenate(key) in rawProps) {
|
|
||||||
rawValue = rawProps[hyphenate(key)]
|
|
||||||
} else {
|
|
||||||
rawValue = rawProps[key]
|
|
||||||
}
|
|
||||||
validateProp(key, toRaw(rawValue), opt, !hasOwn(props, key))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user