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

ReactJS中无法将response.data转字符串与CREATED比较怎么办

问题根因

  • 你调用JSON.stringify(getStatus)后没有将转换结果赋值给变量,后续对比逻辑用的还是原始对象,这步转换等于没生效
  • 接口返回的response.data本身是对象类型,不可能直接和字符串"CREATED"做全等匹配,结果自然为false

解决步骤

  1. 先确认返回对象的实际结构
    在拿到getStatus后打印完整内容,看接口返回的字段结构:
console.log('完整getStatus内容:', getStatus)

90%以上的概率接口返回的是类似{ status: "CREATED" }的结构体,你直接取对应字段对比即可:

if (getStatus?.status === "CREATED") {
  // 返回对应图片的逻辑
}
  1. 确实需要转字符串对比的处理
    如果确认返回的对象是字符串包装类、或者单字段对象要转字符串对比,要先接住转换结果再做判断:
// 方法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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:06:01