微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。