vue3 + ts reactive方式清空表单对象

reactive 方式

javascript 复制代码
const emptyForm = (): DefectRecord => ({
  recordStatus: DEFECT_RECORD_STATUS.DRAFT,
  unsafeBehaviorFlag: false,
  rectifiedOnRegister: false,
  isRepeat: false,
  hasEquipment: false,
  observeTime: nowStr(),
  observerId: currentUserId.value,
  observerNickname: currentUserName.value
})
const form = reactive<DefectRecord>(emptyForm())
javascript 复制代码
function resetFormData() {
  Object.keys(form).forEach(key => {
    delete form[key]
  })
  Object.assign(form, emptyForm())
  proxy.resetForm('formRef')
}

Object.assign(form, emptyForm()) 这个只能替换 emptyForm 中定义的字段

emptyForm 中没有定义的字段 比如 id 、remark 、status 等等其他字段会保持原样

下面这样 先 删除所有key 再 赋值 就能达到重置的效果

Object.keys(form).forEach(key => {

delete formkey

})

Object.assign(form, emptyForm())

ref 方式

javascript 复制代码
// 如果你用的是 ref() 就简单很多:
// 表单很常见
const form = ref({
  name: '',
  age: 0
})
// 正确重置方式(这会清空没有列出来的字段):
form.value = {
  name: '',
  age: 0
}
相关推荐
随风一样自由4 小时前
【前端独角兽】刚进入前端领域的前端开发用jQuery还是Vue3?
前端·javascript·vue3·jquery
IMPYLH5 小时前
HTML 的 <data> 元素
前端·html
西门吹-禅5 小时前
java springboot N+1问题
java·开发语言·spring boot
YHHLAI5 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
skywalk81635 小时前
设计并实现段言的 C FFI 绑定机制 @Trae
c语言·开发语言·python·编程
weixin_BYSJ19876 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
沪飘大军6 小时前
ll-llm:一个零依赖、可插拔的 OpenAI 兼容 LLM 代理
javascript
IT笔记7 小时前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust
kyriewen7 小时前
我扒了 GPT-5.6 的全部编程跑分——有一项 OpenAI 没敢放出来
前端·gpt·ai编程
2zcode7 小时前
免费开源项目文档:基于MATLAB卷积神经网络的口罩佩戴检测系统
开发语言·matlab·cnn