ReactJS中无法将response.data转字符串与CREATED比较怎么办
问题根因
- 你调用
JSON.stringify(getStatus)后没有将转换结果赋值给变量,后续对比逻辑用的还是原始对象,这步转换等于没生效 - 接口返回的
response.data本身是对象类型,不可能直接和字符串"CREATED"做全等匹配,结果自然为false
解决步骤
- 先确认返回对象的实际结构
在拿到getStatus后打印完整内容,看接口返回的字段结构:
console.log('完整getStatus内容:', getStatus)
90%以上的概率接口返回的是类似{ status: "CREATED" }的结构体,你直接取对应字段对比即可:
if (getStatus?.status === "CREATED") { // 返回对应图片的逻辑 }
- 确实需要转字符串对比的处理
如果确认返回的对象是字符串包装类、或者单字段对象要转字符串对比,要先接住转换结果再做判断:
// 方法1:用JSON.stringify后去掉多余的双引号 const statusStr = JSON.stringify(getStatus).replace(/"/g, '') console.log(statusStr === "CREATED") // 方法2:用toString或valueOf直接转原始值 const statusStr = getStatus.toString() // 或者 const statusStr = getStatus.valueOf()
额外注意的代码问题
你当前直接在render方法里调用异步函数showImage的写法是错误的:
异步函数默认返回Promise对象,无法直接渲染为React组件,还会导致每次页面重渲染都重复发起大量接口请求,性能极差。
建议你调整逻辑:调用getTasks获取任务列表时,让后端直接把每个任务的status和任务信息一起返回,存在state.task_one的对应字段里,渲染时直接取task.status做判断即可,不需要单独给每个任务发请求查询状态。
内容的提问来源于stack exchange,提问作者Aneesh Edavalath S
相关产品推荐
相关产品推荐

