猿问

访问对象内部的数组

我有一个 javascript 对象,我想通过它的一个属性进行映射,该属性是一个数组。但是由于某种原因,当我映射它甚至调用我知道是数组的属性上的 .length 时,它会将属性视为不是数组。


对象是从异步对象中的 axios get 请求创建的。


useEffect(() => {


   async function fetchData() {

            const dummyData = await axios.get(

                'http://localhost:3000/data',

            );

            dummyData.data.videos.map(video => {

                return (

                    setCurrentEdition(video.currentEdition[0])

                );

            });

        }

        fetchArtPiece();

        return () => console.log('clean artPiece detail page');

    }, []);


currentEdition: {

  videoAssociated: {id: "oYu5J4TQbJ728c45ExWopZicY9LrCxNNTEZ3"}

  bids: []

  id: "Kr3fjeo51"

  owners: (2) [{…}, {…}]

}

我现在要做的就是 .map() ,它会引发未定义的错误


currentEdition.owners.map(owners => console.log(owners))

即使当我检查 currentEdition.owners.length 时,它也会抛出一个未定义的错误,当我记录 currentEdition.owners 时,proto: 是一个数组,它有方括号和所有内容,所以为什么在我尝试操作时不将其视为数组在上面?

哆啦的时光机
浏览 92回答 1
1回答

蛊毒传说

好吧,既然您正在处理异步数据,您应该始终确保您拥有数据,然后开始使用它。所以要解决这个问题,你需要为你的 JSX 设置一个条件,如下所示:<Grid&nbsp;item&nbsp;xs={7}>&nbsp;{Array.isArray(currentEdition?.owners)&nbsp;&&&nbsp;console.log(currentEdition.owners.length)}&nbsp;</Grid>
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答