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
相关产品推荐
相关产品推荐

