У меня проблема с useEffect и useState. Я пытаюсь заполнить состояние данными из api, но это приводит к бесконечному l oop, даже если я использую массив с зависимостями. Это работает, когда я пытаюсь узнать имя. Проблема возникает, когда я пытаюсь получить массив или объект.
Вот код:
const id = props.match.params.id;
const [pokemon, setPokemon] = useState({});
useEffect(() => {
let cancelRequest;
axios
.get(`https://pokeapi.co/api/v2/pokemon/${id}`, {
cancelToken: new axios.CancelToken(
(cancel) => (cancelRequest = cancel)
),
})
.then((res) => {
setPokemon(res.data);
console.log(pokemon);
})
.catch((err) => {
console.log(`ERROR:: ${err.message}`);
});
return () => {
cancelRequest();
};
}, [id, pokemon]);
Вот образец данных из консоли:
{abilities: Array(2), base_experience: 64, forms: Array(1), game_indices: Array(20), height: 7, …}
Спасибо.