@alekseyy__9090
frontend-разработчик

Почему метод некорректно работает с добавлением уникальных ключей?

Создал карточку с возможностью добавления тасков. При добавлении тасков метод начинает некорректно добавлять их (дублирует их), и с каждым добавлением все больше.
Причем, если в методе renderTasks в return
return (
          <p className="task"  key={new_current_id} >{item}</p>
        )


убрать добавление элемента с индификатором key, то

return (
          <p className="task">{item}</p>
        )


то все начинает добавляться корректно (но только реакт просит, что бы у эллементов все-таки были индивидуальные ключи), но почему добавляемые c ключами элементы начинают дублироваться так и не могу понять.

Вот ссылка на codepen https://codepen.io/aleksey_000/pen/RwaojXQ?editors=1010
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
search
@search
мама говорит что я особенный
Потому что key должен быть уникальным значением, а у вас используется одно и тоже значние для кадого элемента списка. Самый простой и примитивный способ заткнуть реакт чтоб он не ругался на отцуствие ключа, это сделать как-то так:

taskList.map(function(item, idx) {
  return (
    <p className="task" key={idx} >{item}</p>
  )
})


Но способ лучше - это организовать структуру состояния таким образом, чтоб уникальный ключ хранился в каждом элементе списка. Типа того:

taskList = [
  {id: 1, objective: 'Buy milk'},
  {id: 2, objective: 'Learn React'},
]

taskList.map(task => (<div key={task.id}>{task.objective}</div>))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы