Задать вопрос
@japan123

Насколько корректна такая реализация добавления и удаления элементов?

В примере есть два метода: добавление и удаление элемента из массива. В React нельзя напрямую менять state.
Чтобы добавить элемент в массив методом push, мне нужно создать копию массива, поскольку метод push мутабелен.
Для удаления элемента я воспользовался методом splice. Он иммутабелен, поэтому копию массива создавать не нужно, но поскольку this.state.items повторяется более одного раза, не плохо сделать деструктуризацию. Почему в removeItem работает в качестве метода, а addItem только в качестве стрелочной функции? Меня интересует насколько корректно я реализовал два этих метода.
https://codesandbox.io/s/rwnkvmzxx4
  • Вопрос задан
  • 182 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Вот вы вроде бы в курсе, что стейт не следует менять напрямую - а тем не менее это делаете.

Что вы понимаете под "мутабелен" и "иммутабелен" по отношению к методам массива я не знаю, и знать не хочу. Но могу точно сказать - не то, что надо. Вам явно стоит заглянуть сюда.

Делайте копию массива перед splice'ом, и сам splice выполняйте над копией - так же, как push при добавлении элемента.

Кстати, о добавлении - почему у вас там в код метода зашита константа в качестве нового id? Нажали "добавить" два раза - вот и два элемента с одинаковыми id. Неужели так трудно было сгенерировать уникальный? Например.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽