У меня есть функция, которая выполняет итерацию по массиву, захватывает все данные маркеров, а затем помещает их в компонент Map. React постоянно предупреждает меня, что у каждого ребенка должен быть ключ. Leaflet генерирует дополнительных дочерних элементов для каждого маркера. У меня нет никакого контроля над этими дополнительными дочерними элементами.
Вот этот раздел кода
{
this.state.markers.map((content, idx) => (
<>
<Marker
key={`marker-${idx}`}
icon={content["icon"]}
position={content["position"]}
>
<Popup
key={`popup-${idx}`}
closeButton={false}
className={styles.popup}
>
<span>{content["popupText"]}</span>
</Popup>
</Marker>
{content["radius"] && (
<Circle
key={`circle-${idx}`}
center={content["position"]}
radius={content["radius"]}
color={content["color"]}
></Circle>
)}
</>
));
}
Массив маркеров генерируется функцией, которая получает данные из firebase.
firebase.firestore().collection('markers').get().then(async (snap) => {
snap.forEach((marker) => {
this.state.markers.push({
position: marker.data()['position'],
icon: this.state.icons[marker.data()['icon']][0],
color: this.state.icons[marker.data()['icon']][1],
popupText: marker.data()['popupText'],
radius: marker.data()['radius']
})
})
}