Вы можете подойти к этому несколькими способами.
Редактировать: Теперь, когда мы знаем, что лайки - это просто массив строк
Использование .includes()
handleClick = person => {
const likes = this.state.likes
//check to see if person has already liked
if (likes.includes(person)) {
//user has already liked. Choose one option (1 or 2)
//Option 1: create a new like array without the current user
const newLikes = likes.filter((like) => like !== person)
//Option 1: update state with new likes
this.setState({
likes: newLikes
})
//Option 2: or do nothing
return;
//this executes if the user has not liked yet
} else {
this.setState({
likes: [...likes, person]
})
}
};
То, что я подразумеваю под словом «выполнить одно из следующих действий», зависит от того, как вы хотите, чтобы ваша функция работала.
Вариант 1:
Если вы хотите создать своего рода эффект переключения, когда пользователю уже понравился элемент. Вам следует выбрать первый вариант, в котором мы создаем новый arr и обновляем состояние. Это будет «непохоже», удалив пользователя из понравившегося массива. И затем нажав
Вариант 2:
было бы просто ничего не делать. если пользователь нажимает кнопку, и она ему уже понравилась, это только сохраняет статус.