Есть несколько вещей, которые должны быть обновлены здесь.
Во-первых, copyVote
- это массив, содержащий количество голосов за каждую цитату. Так что ...copyVote
даст вам каждый элемент в этом массиве. Вам нужно только проголосовать за текущую цитату. Ваше начальное состояние vote
должно быть
const [vote, setVote] = useState(copyVote[selected])
Вы также хотите обновить функцию addVote
, как указано в DSCH.
const addVote = () => {
// copyVote[selected]++ is the same as copyVote[selected] += 1 and copyVote[selected] = copyVote[selected] + 1
setVote(copyVote[selected]++)
}
Наконец, вы хотите добавить способ обновления голоса при каждом изменении анекдота. Вы можете сделать это в функции changeAnecdote
, но лучшим подходом было бы использование ловушки эффектов, которая зависит от состояния selected
.
useEffect(() => {
// Set the value of vote to match the newly selected quote
setVote(copyVote[selected])
}, [selected])
При использовании этого реквизита DisplayVotes
vote
будет отображаться только голос за текущую выбранную цитату. Вам может потребоваться обновить этот компонент, чтобы справиться с этим.