Это часть предыдущего поста: Каковы рекомендации React для получения данных, которые будут использоваться для рендеринга страницы?
Я добавляю объекты в массив с помощью useState ( []). Каждый объект имеет значение firstName и lastName. Я хочу сложить всю длину всех имен и фамилий, чтобы получить общее количество символов, чтобы затем я мог получить среднюю длину имени для каждого.
То, что у меня есть в настоящее время, дает мне неправильную информацию значения: firstName (100) lastName (106)
Значения должны быть 6 & 7
const [players, setPlayers] = useState([]);
const [firstNameCount, setFirstNameCount] = useState(0);
const [lastNameCount, setLastNameCount] = useState(0);
useEffect(() => {
setPlayers([]);
teams.forEach(teamId => {
axios.defaults.headers.common['Authorization'] = authKey;
axios.get(endPoints.roster + teamId)
.then((response) => {
let teamPlayers = response.data.teamPlayers;
console.log(response.data.teamPlayers)
setPlayers(prevPlayers => [...prevPlayers, ...teamPlayers]);
})
.catch((error) => {
console.log(error);
})
});
}, [teams]);
useEffect(() => {
players.forEach(player => {
setFirstNameCount(prevCount => prevCount + player.firstName.length);
setLastNameCount(prevCount => prevCount + player.lastName.length);
})
}, [players]);
Если я изменю код на этот
useEffect(() => {
setPlayers([]);
teams.forEach(teamId => {
axios.defaults.headers.common['Authorization'] = authKey;
axios.get(endPoints.roster + teamId)
.then((response) => {
let teamPlayers = response.data.teamPlayers;
console.log(response.data.teamPlayers)
setPlayers(prevPlayers => [...prevPlayers, ...teamPlayers]);
teamPlayers.forEach(player => {
setFirstNameCount(prevCount => prevCount + player.firstName.length);
setLastNameCount(prevCount => prevCount + player.lastName.length);
})
})
.catch((error) => {
console.log(error);
})
});
}, [teams]);
Это замедляется значительно снизил рендер, и я получил: firstName (7), lastName (7), что все еще не так.