我有一个 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: 是一个数组,它有方括号和所有内容,所以为什么在我尝试操作时不将其视为数组在上面?
1 回答
蛊毒传说
TA贡献1895条经验 获得超3个赞
好吧,既然您正在处理异步数据,您应该始终确保您拥有数据,然后开始使用它。
所以要解决这个问题,你需要为你的 JSX 设置一个条件,如下所示:
<Grid item xs={7}> {Array.isArray(currentEdition?.owners) && console.log(currentEdition.owners.length)} </Grid>
添加回答
举报
0/150
提交
取消