immer (immerjs/immer)
Searching Database…
Что это такое?
Immer — это небольшая JavaScript-библиотека для работы с неизменяемым (immutable) состоянием: вы пишете код, который изменяет текущее состояние, а библиотека сама создаёт для вас следующее неизменяемое дерево состояния.
Это фреймворк, который я внедряю в проект, или библиотека, которую я просто вызываю из своего кода?
Обычная библиотека — один npm-пакет без рантайм-зависимостей, который вы вызываете из своего JavaScript-кода, а не фреймворк, диктующий структуру приложения.
Как добавить её в проект?
Установите её из npm — npm install immer (или yarn add immer) — и импортируйте как любой другой пакет; полная документация находится на immerjs.github.io/immer.
Нужно ли ставить что-то ещё вместе с ней?
Нет. У пакета ноль рантайм-зависимостей, поэтому достаточно любого JavaScript-окружения с npm или yarn.
Она привязана к React, или можно использовать с чем угодно?
Это обычный JavaScript, поэтому использовать её можно где угодно, хотя больше всего она известна в мире React — в 2019 году она получила награду React Open Source Award — и популярна для редьюсеров в стиле Redux.
Она работает только в Node или тоже в браузере?
Это чистый JavaScript без нативных частей, поэтому она работает везде, где работает JavaScript — в браузере для веб-приложений и в Node на сервере.
Как на самом деле выглядит код, написанный с Immer?
Вы передаёте ей текущее состояние и функцию, которая изменяет черновую копию (draft); Immer отслеживает, что вы изменили, и возвращает совершенно новое неизменяемое состояние, так что вам не нужно вручную делать spread и копирование.
Есть ли в ней описания типов для Flow или TypeScript?
В репозитории поддерживаются типы Flow — тестовый скрипт запускает yarn flow check для папки __tests__/flow — так что API типизирован для пользователей Flow.
Могу ли я покопаться в коде, не настраивая локальное окружение для разработки?
Да. В README есть воркспейс Gitpod в один клик: он клонирует репозиторий, устанавливает зависимости и запускает 'yarn run start', так что можно сразу писать код прямо в браузере.
Проект ещё живой?
Да — он не архивирован, у него есть автоматизированный CI для релизов (release.yml) наряду с воркфлоу тестов и документации, он развивается с 2017 года, а в README есть раздел с заметками о релизах.
What are similar projects?
normalizr, Recoil, zustand, nuqs, redux-form, reactstrap, reselect, redux
Which topics is it in?
mit-license, redux, no-dependencies, reactjs, state-management, data-structures, node, javascript-library, developers, web-development, react, free