vue3 Object.assign重置reactive对象注意了

情景因为编辑的时候是回赋值id的 然后再点击新增会携带这个id 有时候如果是根据这个id来判断新增/编辑接口的话 就会只调用编辑接口 或者 新增携带id 也会请求失败

image.png

const onClose = async (formEl: FormInstance | undefined) => {
    if (!formEl) return;
    formEl.resetFields();
    //用对象的assign方法进行合并,Object.assign(需要重置的参数,计算方法返回的值)
    Object.assign(addOrUpdateParams, initAddOrUpdateParams());
};

const defaultSearchParams = (): StorePageParams => {
    return {
        name: '',
        personInCharge: '',
        phone: null,
        teamId: null,
        pageNum: 1,
        pageSize: 10,
    };
};

const searchParams = reactive<StorePageParams>(defaultSearchParams());


不用方法的话 也可以用 {…对象}

import { reactive, ref } from "vue";
 
//保存初始化数据
const initInputData = {
  datasourceName: "",
  driverClassName: "",
  url: "",
  userName: "",
  password: "",
  startYear: "",
  endYear: "",
  status: true,
  action: "submit",
  id: "",
  ip:'',
  port:''
}
const inputData = reactive({...initInputData});
 
//重置函数
const resetInputData = () => {
  Object.assign(inputData,initInputData)
}

点击弹窗关闭

image.png

解决1: 加上id 对重复的属性重置 (但是新增会多余一个空值)

image.png
image.png

解决方法二:重置单独删掉id

addOrUpdateParams.id && delete addOrUpdateParams.id

image.png

解决方法三:一个个赋值比较繁琐

 
const state = reactive({
  count: 0,
  name: 'John'
})
 
 
// 重置数据:
state.count = 0
state.name = 'John'

还好及时发现

在这里插入图片描述

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值