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
}
相关推荐
码艺-Alimjan19 小时前
Vue项目源码备份最佳实践:无视node_modules,打包体积仅2MB
前端·javascript·vue.js
隔窗听雨眠19 小时前
esbuild构建工具简介:重新定义前端构建速度的极速打包器
前端
蔓越莓19 小时前
Webpack 常用 Loader +手写Loader
前端·面试
mqiqe19 小时前
线程调度与 Schedulers:Project Reactor 并发模型的核心引擎
java·开发语言·网络
潍坊老登20 小时前
写了一个某音自动刷视频,通过大模型分析视频主题的Android应用
前端
蔓越莓20 小时前
性能优化:webpack打包层面优化
前端·面试
TJHHH.20 小时前
XSS-labs-master
前端·web安全·xss
风月说与山鬼20 小时前
十二、Vue插件
前端·vue.js