Когда копируете объект через {...obj}, вложенные структуры остаются по ссылке. Меняете копию → меняется оригинал.
Ограниченный, но быстрый для простых структур
const clone = (obj) => JSON.parse(JSON.stringify(obj));
Современный универсальный API (Chrome 98+, Firefox 94+, Node 17+, Safari 15+)
const clone = (obj) => structuredClone(obj);
const addItem = (newItem) => {
const clonedState = structuredClone(state);
clonedState.items.push(newItem);
setState(clonedState);
};
⚠️ Глубокое копирование — дорогая операция. В React его используют точечно, а не для всего состояния. В крупных приложениях лучше использовать immer или нормализованные структуры данных.
— Копирование вложенных объектов и графов
— Redux / Zustand, когда нельзя мутировать state
— Снимки данных перед трансформациями
— Копирование конфигураций, где нет функций и методов
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#readme #js #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🥰2
Команда (алиас npm why с npm 7+) показывает полную цепочку зависимостей — кто, через что и зачем тянет пакет.
Нужно узнать, откуда lodash в зависимостях:
npm explain lodash
Получаете цепочку: проект → axios → follow-redirects → lodash.
Сразу видно, что обновлять или менять.
Подозрение на несколько React одновременно:
npm ls react
Команда покажет каждую версию и её источник.
Нашлась уязвимая транзитивная зависимость:
npm explain vulnerable-package
Понимаете, через какой пакет она попала — обновляете или заменяете.
Проверить только прямые зависимости:
npm ls --depth=0
Быстро находит забытый мусор в package.json.
🧶 Yarn альтернатива
yarn why package-name
Работает так же, с более подробным выводом.
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#readme #npm
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥰4🔥3
React_собес_30_вопросов_с_развёрнутыми_ответами.pdf
58.5 KB
Скачай, изучи, получи оффер
#readme #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍1