Chào mọi người, cho mình hỏi là làm sao để hoàn thành vòng lặp rồi mới setState được.
Chuyện là useEffect chạy 2 lần do React.StrickMode và mình setState trong loop thì bị double. Phải gáng cho nó 1 list mới nhưng lúc này không nhận được dữ liệu gì cả.
À mới học TypeScript nên nhìn code hơi luộm thuộm.
Xin cảm ơn!
useEffect(() => {
const pokemonList: PokemonType[] = [];
const fetchPokemonApi = async () => {
const params = {
limit: 3,
offet: 20
}
const call = () => {
console.log(pokemonList);
}
const response: any = await pokemonApi.getAll(params);
response.results.forEach(async (pokemon: PokemonType) => {
const poke: any = await pokemonApi.getId(pokemon.name);
pokemonList.push(poke);
setPokemons((p) => [...p, poke]); // List State bị double
});
console.log(pokemonList); // pokemonList : []
setPokemons(pokemonList);
};
fetchPokemonApi();
}, []);