Вы должны сначала решить, как идентифицировать каждую карту как уникальную, чтобы вы могли обновить правильную. Если у вас есть id
, который был бы идеальным, но я собираюсь предположить, что name
уникален, поскольку в вашем вопросе это значение.
// pass the unique identifier to handler
handleClick(name) {
this.setState((prevState) => ({
// map over the previous cards and return a new array
cards: prevState.cards.map((card) => {
// If the name matches the current card, change it
if (card.name === name) {
return {...card, numVotes: card.numVotes + 1};
} else {
// Otherwise just return the same card unchanged.
return card;
}
})
}))
}
Тогда в вашем компоненте используйте его следующим образом :
// Use inline function so we can pass it a prop as a parameter
<span className="like-button" onClick={() => props.handleClick(props.name)}>