【发布时间】:2020-02-09 23:34:08
【问题描述】:
我有两个长度相同的数组,我想对它们进行迭代并将可迭代对象发送到一个新组件。
第一个数组是haircutsLeft,第二个是haircutsRight。按照这个问题:Using map to iterate through two arrays,我尝试了他们的建议,但收效甚微。
第一次尝试
export default function VotingComponent({haircutsLeft, haircutsRight}) {
return(
<Grid
{haircutsLeft.map((haircutLeft, idx) =>
<DisappearingComponent haircutLeft={haircutLeft} haircutsRight={haircutsRight[idx]} idx={idx}/>
)}
</Grid>
)
}
它不会将
haircutsRight={haircutsRightLoop[idx]}传递给DisappearingComponent,因为如果我在控制台登录DisappearingComponent,我会得到undefined
第二次尝试
export default function VotingComponent({haircutsLeft, haircutsRight}) {
haircutsLeft.map((haircutLeft, index) => {
const haircutRight = haircutsRight[index];
return (
<div>
<DisappearingComponent haircutLeft={haircutLeft} haircutsRight={haircutRight}/>
</div>
);
});
}
我收到
VotingComponent(...): Nothing was returned from render.
第三次尝试 - 按照评论的建议
export default function VotingComponent({haircutsLeft, haircutsRight}) {
return haircutsLeft.map((haircutLeft, index) => {
console.log(index)
const haircutRight = haircutsRight[index];
console.log(haircutRight)
return (
<div>
<DisappearingComponent haircutLeft={haircutLeft} haircutsRight={haircutRight}/>
</div>
);
});
}
我可以正确地控制台记录
index,但haircutRight给了我undefined
这是我要向其发送道具的组件
export default function DisappearingComponent({haircutLeft, haircutRight}) {
console.log("haircutLeft", haircutLeft) // Correct value
console.log("haircutRight", haircutRight) // Undefined
return(
<div>
<Grid item xs={6}>
<LeftCard haircutLeft={haircutLeft} />
</Grid>
<Grid item xs={6}>
<RightCard haircutRight={haircutRight}/>
</Grid>
</div>
)
}
【问题讨论】:
-
您的第三次尝试应该会奏效。你的
haircutsRight里面有数据吗?另外,它的长度和haircutsLeft一样吗?正如我在回答中提到的那样,这只有在您的第二个数组与第一个数组大小相同时才有效。 -
是的,两者的长度相同。在祖父组件中,我有一个长度为 16 的
haircuts数组,并将其分成两半。然而,既然你让我注意到了,haircutsRight是空的,即使在祖父组件中包含正确的值。我会试着看看我做错了什么。谢谢 -
很高兴我能帮助您解决这个问题。祝你好运!
标签: reactjs