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
}
相关推荐
一碗白开水一3 分钟前
Day 5 · 弹性 | 微观
java·前端·数据库
Lsx_11 分钟前
微信支付接入全流程:JSAPI支付、小程序支付与H5支付
前端·javascript·全栈
OpenTiny社区28 分钟前
React 正式登场!GenUI SDK v1.4.0 三框架渲染、出码与 Agent 生态重磅升级~
前端·ai编程
试图让你心动38 分钟前
【无标题】
前端·javascript·vue.js
Hilaku40 分钟前
为什么每个前端都应该拥有一个自己的独立博客?
前端·javascript·程序员
小oo呆42 分钟前
【学习心得】Python函数参数中的两个特殊分隔符
开发语言·python
燕落南枝44 分钟前
CSS 后代选择器与子代选择器:从入门到实战
前端·css
Amos_Web1 小时前
Rspack 源码解析(二十八):HtmlRspackPlugin 如何把模板变成带资源标签的最终产物
前端
x10n91 小时前
微软 VC++ 运行库合集VCRedistPack
开发语言·c++·microsoft·vc++运行库·dll报错