You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建编辑用默认对象时出现异常Bug求助

问题排查与解决

先确认控制台的视觉错觉问题

浏览器控制台打印对象时采用惰性求值,展开对象时读取的是当前最新值,而非打印瞬间的快照。你可以用JSON.stringify打印完整快照来验证真实值:

const campaign = getDefaultCampaign(); // 或你当前的赋值方式
console.log(JSON.stringify(campaign, null, 2)); // 打印对象的字符串快照
console.log(campaign.mail);

如果字符串快照里mail属性是正确的,那只是控制台显示的问题,实际对象没问题;如果快照里mail和general内容一致,说明对象本身被修改了。

排查对象被修改的核心原因

  1. 避免全局默认对象被篡改
    如果defaultCampaign是全局变量,排查项目中是否有其他代码直接修改了它的mail属性(比如误把general赋值给mail)。改成函数返回新对象的方式可以彻底规避这个问题:
const getDefaultCampaign = (): CampaignNpoCreate => ({
    general: {
        campaignName: '',
        languages: [],
        urlName: '',
        campaignLogo: '-',
        approveP2P: false,
    },
    mail: {
        enableThanksMail: false,
        enableFiscalCertificateMail: false,
        thanksMail: '',
    },
});
// 使用时每次生成全新对象
const campaign = getDefaultCampaign();
  1. 检查表单绑定是否有误
    表单无法获取正确值,大概率是v-model绑定路径错误,比如误将mail的字段绑定到了general对象上:
<!-- 错误示例:混淆了general和mail的绑定路径 -->
<input type="checkbox" v-model="campaign.general.enableThanksMail">
<!-- 正确绑定应该是 -->
<input type="checkbox" v-model="campaign.mail.enableThanksMail">

仔细核对表单中所有绑定的属性路径,确保没有混淆general和mail。

  1. 排查后续代码的赋值操作
    检查const campaign = ...之后的代码逻辑,是否存在不小心将general赋值给mail的情况,比如处理表单数据、接口请求时的错误赋值。

内容的提问来源于stack exchange,提问作者Jonathan Couck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 00:04:58