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

如何将JSON对象存为数组并传递给React组件(不使用setState)

解决Fetch获取数据后传递空数组给React组件的问题

我懂你遇到的困扰了——想用fetch从API拉取数据给组件,不想用硬编码数组,也不想修改组件内部代码、不用setState,但直接写的话组件拿到的却是空数组对吧?

问题核心在于fetch是异步操作,你原来的代码里,render是在fetch还没拿到数据的时候就执行了,这时候PRODUCTS还是初始的空数组,组件自然接不到有效数据。

给你两个完全符合你要求(不修改组件、不用setState)的解决方案:

方案一:把渲染逻辑放在fetch的回调里

等数据完全获取并赋值后,再执行渲染操作,这样组件拿到的就是完整的产品数据了:

var PRODUCTS = [] 
fetch('https://api.myjson.com/bins/10scuq') 
  .then(res => res.json()) 
  .then(data => {
    PRODUCTS = data
    const container = document.getElementById('root')
    render(
      <FilterableProductTable products={PRODUCTS}/>, 
      container
    )
  })

方案二:用async/await让代码更直观

用自执行异步函数包裹逻辑,等待fetch完成后再渲染,可读性更好:

(async function() {
  const res = await fetch('https://api.myjson.com/bins/10scuq')
  const PRODUCTS = await res.json()
  const container = document.getElementById('root')
  render(<FilterableProductTable products={PRODUCTS}/>, container)
})()

这两种方法都是确保数据准备好之后再把它传给组件,组件就能正常接收到完整的产品列表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:47:27