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

React中如何在对象内使用条件判断构建API请求payload

解决方案:根据profession动态生成API请求payload

你的代码核心问题是在对象字面量内部使用三元运算符的语法错误——JavaScript不允许直接在对象的键值对列表中插入三元分支,正确的做法是让三元运算符返回完整的additional_info对象。

方法一:直接在payload中用三元运算符赋值

const payload = {
  name: registerData.fullname,
  password: registerData.password,
  confirm_password: registerData.confirmPassword,
  email: registerData.email,
  // 三元运算符返回对应场景的完整对象
  additional_info: profession === "Student" 
    ? {
        universityname: values.universityname,
        course: values.course,
        start_year: values.start_year,
        end_year: values.end_year
      }
    : {
        professorUniversity: values.professorUniversity,
        department: values.department,
        organizationName: values.organizationName,
        organizationLocation: values.organizationLocation,
        investorCompany: values.investorCompany,
        investorCompanyWebsite: values.investorCompanyWebsite,
        companyName: values.companyName,
        govtSector: values.govtSector,
        govtDesignation: values.govtDesignation
      }
};

api.post("some-url/register", payload);

方法二:先单独生成additional_info,再组装payload(可读性更好)

如果后续需要扩展更多职业分支,这种方式更易维护:

let additionalInfo;

if (profession === "Student") {
  additionalInfo = {
    universityname: values.universityname,
    course: values.course,
    start_year: values.start_year,
    end_year: values.end_year
  };
} else {
  additionalInfo = {
    professorUniversity: values.professorUniversity,
    department: values.department,
    organizationName: values.organizationName,
    organizationLocation: values.organizationLocation,
    investorCompany: values.investorCompany,
    investorCompanyWebsite: values.investorCompanyWebsite,
    companyName: values.companyName,
    govtSector: values.govtSector,
    govtDesignation: values.govtDesignation
  };
}

const payload = {
  name: registerData.fullname,
  password: registerData.password,
  confirm_password: registerData.confirmPassword,
  email: registerData.email,
  additional_info: additionalInfo
};

api.post("some-url/register", payload);

错误原因说明

原代码中,你试图在additional_info的对象内部用三元运算符拆分键值对,但JavaScript的对象字面量语法要求键值对是明确的条目,不能通过三元运算符直接插入不同的键值对集合。必须让三元运算符作为一个整体,返回符合当前场景的完整对象,赋值给additional_info。

内容的提问来源于stack exchange,提问作者Mohammed Anas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:10:33