Я создаю приложение для викторины с перехватчиками реакции, и у меня есть некоторые проблемы.
У меня есть обратный отсчет от 20 с заданным интервалом, но это вызывает повторную визуализацию чего-то, не связанного с моим компонентом.
Когда компонент монтируется, я использую Эффект, чтобы присвоить оценку каждому аватару. allAvatars - это свойство, которое передается этому компоненту.
const [userScores, setUserScores] = useState([])
useEffect(() => {
const userScoreObject = allAvatars.map((user) => {
user.score = 0;
return user;
})
setUserScores(userScoreObject);
}, [])
Затем у меня есть другой useEffect для моего таймера в зависимости от состояния игры.
useEffect(() => {
let interval;
if (gameState === 'play') {
interval = setInterval(() => {
setTimer(timer -= 1)
}, 1000)
} else if (gameState === 'pause') {
return clearInterval(interval);
}
return () => clearInterval(interval)
}, [gameState])
Я помещаю только gameState в массив зависимостей, так как хочу, чтобы этот эффект вызывался только при изменении состояния игры. Состояние игры инициализируется как «игра»
В моем JSX Im сопоставление этих пользовательских оценок.
{
userScores &&
userScores.map((user, index) => {
console.log(user)
return (
<div key={index} >
<img src={user.avatar} alt='avatar'></img>
<p>{user.score}</p>
</div>
)
})
}
Проблема в том, что этот журнал консоли создается каждую секунду. Почему таймер вызывает повторную визуализацию?
Спасибо