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

React Native中如何解决JSON数组拼接时出现嵌套子数组的问题

问题根因

接口返回的json本身是一个包含商品对象的数组,而非单个商品对象。你直接调用push(json)时,会把整个返回的数组作为一个元素插入原有数组,最终形成嵌套结构,和预期的平级数组不符。
另外你直接修改this.state.item_data原有数组的写法不符合React的不可变数据规范,也建议同步调整。

修复后的代码
fetch('https://punjabfoodhub.in/app/reg.php', {
  method: 'POST',
  mode: 'no-cors',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    item_id: ids,
    func: 'item_data',
  }),
})
  .then((response) => response.json())
  .then((json) => {
    if (this.state.item_data.length == 1) {
      // 用展开运算符拆分返回的数组元素,合并到新数组中
      this.setState({ 
        item_data: [...this.state.item_data, ...json] 
      }, () => {
        //  setState是异步操作,要在回调里才能拿到最新的state
        console.log(this.state.item_data);
      });
    } else {
      this.setState({ item_data: json });
    }
  })
  .catch((err) => {
    console.log(err);
  });
补充说明
  • 用展开运算符...json可以把返回数组里的所有商品对象拆出来,和原有数组合并成新的平级数组,避免嵌套
  • setState是异步方法,直接在setState后打印state拿到的是旧值,要放到回调函数里才能拿到更新后的值
  • 不要直接修改state里的原有数组,始终用新数组覆盖的方式更新state,符合React的设计规范,避免出现状态更新异常

内容的提问来源于stack exchange,提问作者Jenil Chavda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:15:02