Изменить состояние просто:
this.setState({ selectedCountry: value })
Больше ничего не нужно.
Однако изменение состояния всегда приводит к повторному отображению. И я вижу большую проблему с вашим рендерингом.
Каждый раз, когда вызывается render
, вы будете рандомизировать свои флаги:
const countries = this.state.countryFlags ? [
Math.floor(Math.random() * this.state.countryFlags.length),
Math.floor(Math.random() * this.state.countryFlags.length),
Math.floor(Math.random() * this.state.countryFlags.length),
Math.floor(Math.random() * this.state.countryFlags.length)
] : ""
Поэтому ваш интерфейс изменится.
Render
должен всегда возвращать одно и то же, если свойства и состояние не изменились. Тем не менее, ваш render
всегда будет отображать разные вещи в зависимости от случайных чисел.
Вы должны переместить рандомизацию в ваше состояние, например:
.then((data) => {
const countries = [
Math.floor(Math.random() * data.length),
Math.floor(Math.random() * data.length),
Math.floor(Math.random() * data.length),
Math.floor(Math.random() * data.length)
]
this.setState({ countryFlags: data, countries })
});