EVGENIY ARAPOV, потому что вначале нужно пакеты устанавливать, а потом в файл данные добавлять и сохранять или наоборот, добавить и сохранить, а потом устанавливать пакеты. А так получилось, что ты открыл файл, сделал в нем изменения, не сохранил, потом установил пакеты, которые автоматом внесли свои изменения в файл и теперь твой открытый файл не актуальный, т.к. есть более новая версия.
У тебя файл package.json (и все остальные тоже) судя по картинке не сохранен, т.е. на момент запуска скрипта его нет в файле. Жми ctrl+s в каждом файле, где делались изменения и пробуй снова.
То, что вы написали нужно только, если у вас выполняется несколько функций одновременно, которые обновляют стейт и зависят от текущего стейта, т.е. чтобы получить новое состояние до перерендера компонента, иначе вы получите неверное значение стейта, т.к. setState выполняется асинхронно. Здесь же при нажатии кнопки remove одновременно выполняется функция обновляющая стейт только один раз, поэтому смысла никакого в такой "оптимизации" нет, тем более в обработчиках событий, таких как click, пакетное обновление и сейчас работает по-умолчанию. И, кстати, то, что вы называете колбэком, на самом деле тотже первый аргумент в setState, только функция, а не объект, callback же идет вторым аргументом.
Кстати, с 17 версии реакта (по словам Абрамова) будет пакетное обновление стейта по дефолту вообще везде, а не только в обработчиках событий.
bro-dev, что простите? httpOnly куки можно сетить в любом респонзе. Без всякой перезагрузки в реакте все работает. После получения респонза с куками следующие реквесты отправляются уже с этими куками.
Только в httpOnly, кторые придут с сервера. Соответственно, на фронте не будет никакого доступа к ним, что частично решает проблему их кражи. А еще лучше использовать что-нибудь типа OAuth с access и refresh токенами.