Vue3+TS最佳实践

90 阅读1分钟

emit与prop的定义及其接收

const props = defineProps<{
  nodeData?: Depts
}>()

//暴露给父组件的方法
defineExpose({
  openDialog
})

const emit = defineEmits<{
  (e: 'getDeptList', num: number): void
}>()
const handleClick = () => {
  formRef.value?.validate(async (valid: boolean) => {
    if (!valid) return
    if (form.value.id) {
      await editDepartmentApi(form.value)
      ElMessage.success('编辑成功')
    } else {
      form.value.pid = props.nodeData!.id
      await addDepartmentApi(form.value)
      //成功提示
      ElMessage.success('添加成功')
    }
    //关闭弹框重置表单
    closeDialog()
    //刷新列表
    emit('getDeptList', 1)
  })
}