Я пытаюсь отобразить массив извлеченного API, чтобы отделить отдельные элементы с одинаковыми именами, и setState на основе этого отдельного свойства элемента.Например, массив возвращает несколько разных элементов с разными широтами и долготами.Я могу установить setState с помощью функции onClick внутри функции рендеринга, однако я знаю, что это плохая практика.Я попытался переместить функцию за пределы рендера и использовать onClick = {this.functionName}, но это приводит к странному поведению.Что я делаю не так?
вот функция, которую я создал вне рендера:
mapItem = () => {
const parks = [...this.state.parks];
parks.map(item =>
this.setState({
lat: item.latitude,
lng: item.longitude,
zoom: 16
})
);
};
render() {
return (<h2 onClick={this.mapItem}>{item.name}</h2>)
}
это работает:
render() {
const { parks } = this.state;
return(
{parks.map(item => (
<h2 onClick={() => this.setState({lat: item.latitude,
lng: item.longitude, zoom: 16})
}>{item.name}</h2>
))
)}}
спасибо