try catch 小技巧

2023-11-23  本文已影响0人  前端早晚自习

在封装input 组件时,遇到需要自定义验证的问题,利用 callback 和 try catch 解决

使用

    <Text
        v-model="form.id_number"
        label="身份证号码"
        placeholder="请输入您的身份证号码"
        :config="{ max: 18, leftText: '取消', rightText: '确认', rule: idRule }"
      />


// 身份证验证

const idRule = (val, callback) => {
  const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  if (!reg.test(val) && val !== '') {
    callback(new Error('请输入正确的身份证号码 '))  // 传入回调
  } else {
    callback(val)
  }
}

组件代码

const handleConfirm = (val) => {
  const ruleFn = props.config?.rule
  if (!ruleFn) {
    emit('update:modelValue', val)
    return true
  }

  const callback = (val) => {
    try {
      if (Object.prototype.toString.call(val) == '[object Error]') { // 传入了验证规则 
        throw new Error('error')
      }
      emit('update:modelValue', val)
    } catch (error) {
    }
  }
  ruleFn(val, callback)
  return true
}
上一篇下一篇

猜你喜欢

热点阅读