ValidateForm组件bug
来源:6-15 Vue router 添加路由守卫 - 使用元信息完成权限管理
farmer_code
2021-06-30
export default defineComponent({
name: 'ValidateForm',
emits: ['submit-form'],
setup(props, context) {
let funcArr: ValidateFunc[] = []
let ClearInputfuncArr: ValidateFunc[] = []
const submitForm = () => {
const result = funcArr.map(func => func()).every(result => result)
console.log(result)
if (result) { ClearInputfuncArr.map(func => func()) } //此处有bug
context.emit('submit-form', result)
}
const callbackClearInput = (func: clearInputFunc) => {
funcArr.push(func)
}
const callback = (func: ValidateFunc) => {
funcArr.push(func)
}
emitter.on('formItemCreated', callback)
emitter.on('clearInput', callbackClearInput)
onUnmounted(() => {
emitter.off('formItemCreated', callback)
emitter.off('clearInput', callbackClearInput)
funcArr = []
ClearInputfuncArr = []
})
return { submitForm }
}
})
老师帮忙看看!
注明有bug处,代码逻辑当result为ture时清空input,但是为false也会清空input,一直排查不出原因
写回答
1回答
-
张轩
2021-07-01
同学你好 你的40行写错了,你直接添加到了 验证的数组中,应该是添加到清空的数组中,代码如下
const callbackClearInput = (func: ValidateFunc) => { // 应该是添加到 ClearInputfuncArr 中啊 ClearInputfuncArr.push(func) }
00
相似问题