@japan123

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

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

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

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

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

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

Похожие вопросы