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

react-leaflet嵌套.map()调用时无法创建Marker组件问题

React-Leaflet嵌套map不生成Marker的问题解决

你嵌套遍历二维数组时,内层data.data.map()返回的Marker组件根本没被React识别到,所以不会渲染。原因很明确:外层的noneSirialSatInfo.map()里,你执行完内层map后直接返回了<Marker position={[0,0]}/>,完全没把内层map的结果返回出去。

修正方案1:只渲染内层数组的Marker

如果不需要[0,0]位置的Marker,直接返回内层map的结果即可,记得给每个Marker加唯一key:

{!UseSerial && SatLineView && noneSirialSatInfo.map((data) => {
  return data.data.map((info) => {
    console.log(info.lat, info.lng)
    // 用info的唯一标识(比如id)作为key
    return <Marker key={info.id} position={[info.lat, info.lng]}/>
  })
})}

修正方案2:同时渲染内层Marker和外层的Marker

如果需要保留[0,0]的Marker,要把内层map的结果和它放在同一个容器(比如React.Fragment)里,同时给外层循环元素加key:

{!UseSerial && SatLineView && noneSirialSatInfo.map((data, outerIdx) => {
  return (
    <React.Fragment key={outerIdx}>
      {data.data.map((info) => {
        console.log(info.lat, info.lng)
        return <Marker key={info.id} position={[info.lat, info.lng]}/>
      })}
      <Marker key={`outer-marker-${outerIdx}`} position={[0,0]}/>
    </React.Fragment>
  )
})}

关键注意点

  • 所有循环生成的React组件,必须添加唯一的key属性,这是React追踪组件状态的必要条件,避免渲染混乱。
  • 内层遍历的返回值必须被外层函数返回,否则React无法识别这些待渲染的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:01:05