element plus的validate和emits时使用扩展运算符传入类出现的bug

在vue3中,我用
reactive声明了一个属于form表单的state,我需要在提交时对其中的某些属性进行验证通过后调用emit方法提交数据到父组件,这时我对emit里面提交的数据做了如下处理:
const ok = (ruleFormRef: any | undefined) => {
  if (!ruleFormRef) return
  ruleFormRef?.validate((valid: any) => {
    if (valid) {
      // @ts-ignore
      emits('closeDialog', { ...state, id: props.info.id || null })
    } else {
      return false
    }
  })
}

此时我发现element的这个验证方法会在调试中运行两次,第一次

valid返回为true,第二次返回为false,
经过排查发现不能对state使用扩展运算符,不然会发生这个问题,最好老老实实的构建一个类对象后放入数据集后提交,问题解决
posted @ 2023-02-07 11:11  洛晨随风  阅读(69)  评论(0编辑  收藏  举报