You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Native循环迭代渲染组件仅重复显示最后一项问题求助

问题原因

代码逻辑存在两个核心错误:

  • 冗余嵌套了两层遍历:外层是for循环,内层又调用了数组的map方法,等于每次for循环都会重新执行一次map生成新的数组,最终cardsOnScreen是最后一次(也就是i=1时)执行map的结果
  • map遍历的时候没有使用回调参数里的当前遍历项card,反而强制用allCards[i]取值,最后一次for循环执行时i已经等于1,所以所有生成的Card组件都取到了索引为1的Sensor 2的属性值

修正方案

直接删掉外层的for循环,直接使用map遍历allCards数组,使用回调函数传入的当前项card读取属性即可,同时注意要给列表渲染的每个组件加唯一key属性,这是React列表渲染的强制要求:

export default function SensorCards() {
  const allCards = [
    {name: 'Sensor 1', type: 'Airsensor'},
    {name: 'Sensor 2', type: 'Watersensor'},
  ];

  const cardsOnScreen = allCards.map(function (card) {
    // 用回调里的card变量取当前遍历项的属性,加上唯一key
    return <Card key={card.name} name={card.name} type={card.type} />;
  });
  return cardsOnScreen;
}

补充说明

React中渲染列表时无需额外嵌套for循环,Array.map()本身就会遍历原数组的每一项,返回对应长度的新数组,直接把这个数组作为返回值即可正常渲染所有项。

内容的提问来源于stack exchange,提问作者Tevop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 08:24:08