Array0,但内容不为空这是什么意思?

问题描述

我有一段这样的代码

getLog (在单独的文件中)

export const getLog = async () => {
     return client.then(async () => {

        res1 = await method1()
        res2 = await method2(res1)
        // further parse data...
        return res4
    }
}

函数是异步的,它返回一个promise,该promise返回各种异步调用的结果。

getItem (反应组件)

const [items,setItems]=useState([])

 getItem = async () => {
    getLog().then((res: any) => {
        let finalArr: any = []
        res.map((val: any) => finalArr.push(val))
        console.log(res,finalArr)

        setItems(finalArr) 
    })
}

getItem()
  • res:打印Array(0),但是当我在DevTools中对其进行扩展时,它显示一个对象数组:

      0: {name: "x",property:"y",otherProperty:"z"}
      1: {name: "x",otherProperty:"z"}
    
  • finalArr:打印Array(0),展开后的确是一个空数组

在我看来,这是array-like object(不可迭代)。

如何从该对象提取数据?

有趣的是,在 React DevTools 中,我可以看到该数组已正确存储在State中,但是当我在模板中使用{items.length}时,它将打印0

(如果不使用模拟数据重建异步/等待流,我将无法给出一个最小的例子。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)