document.addEventListener("DOMContentLoaded")
следует разместить за пределами вашего переопределения componentDidMount
, поскольку это глобальное событие.
Не используйте ванильный выбор и манипуляции с DOM, такие как document.querySelectorAll()
, если вы вообще хотите использовать React, React сохраняет собственное дерево DOM и обновляет его в зависимости от изменений состояния. Вместо этого полагайтесь на повторное выполнение render()
каждый раз при изменении состояния, поэтому вам нужно изменить состояние.
Каждый раз, когда вы используете map
для создания списков элементов, предоставляйте уникальные keys
, чтобы однозначно идентифицировать элементы в дереве React. Ваш источник данных не предоставляет коды ISO для всех элементов, поэтому это ненадежный ключ элемента. Я использовал здесь индекс (то есть счетчик) из функции map
, но в идеале вы должны агрегировать надежный уникальный идентификатор из самих данных.
Вот рабочий код:
https://jsfiddle.net/vpcz9efq/