Как добавить дополнительное свойство для каждого отдельного сопоставленного элемента после вызова стороннего API? - PullRequest
0 голосов
/ 28 февраля 2020

Удаление этой информации, так как она предназначена для конфиденциального проекта

1 Ответ

1 голос
/ 28 февраля 2020

Вы должны сначала решить, как идентифицировать каждую карту как уникальную, чтобы вы могли обновить правильную. Если у вас есть 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)}>
...