Я пытаюсь создать табло для приложения викторины. После ответа на вопрос индекс обновляется. Вот код для компонента.
export const ScoreBoard = ({ result, index }) => {
const [score, setScore] = useState(0)
const [total, setTotal] = useState(0)
const [rightAns, setRight] = useState(0)
useEffect(() => {
if(result === true ) {
setRight(rightAns + 1)
setTotal(total + 1)
}
if(result === false) {
setTotal(total + 1)
}
setScore(right/total)
}, [index]);
return (
<>
<div>{score}</div>
<div>{rightAns}</div>
<div>{total}</div>
</>
)
}
При первом рендеринге значения равны
score = NaN
rightAns = 0
total = 0
После нажатия на одно из исправлений ответы обновляются до
score = NaN
rightAns = 1
total = 1
, а затем, наконец, после еще один ответ (с ложным значением) обновляется до
score = 1
rightAns = 1
total = 2
Счет больше не NaN, но он по-прежнему отображает неправильное значение. После этих трех визуализаций приложение начинает обновлять счет до запаздывающего значения.
score = 0.5
rightAns = 2
total = 3
Что происходит во время первых 3 визуализаций и как это исправить?