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)
}
0
0

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程