потому что нельзя просто взять redux и начать использовать в React. Необходима некая «react-redux» библиотека. А в чём тогда смысл талдычить, что «Redux works with any UI layer»?

На фронт-собесах часто спрашивают: «Как хранить состояние в крупных react-проектах?» Отвечают заученное: можно сделать редуктор в контексте через useContext и useReducer.

Приходишь домой, думаешь: «Сейчас подключу разок, чисто пройти путь, подучиться». Ставишь redux в свой проект, грамотно всё подключаешь: actions, reducers, events. В итоге — консоль обновляется; интерфейс мёртв. ?

В прошлой статье я вывел Redux из конечных автоматов и закончил обещанием: «этот switch-case уже можно вынести в отдельную библиотеку». Сейчас попробую вынести и проверить два мифа:

  • Миф №1. Redux как-то по-особому хранит состояние: надёжно и без перерисовок.

    Не то что тупое замыкание в JS или контекст в React!

  • Миф №2. Redux — независимая библиотека.

    Её можно включить в любой проект и «просто» использовать.

День 1. Выносим switch-case в библиотеку

Редуктор (reducer) — функция переходов конечного автомата — остался с прошлой статьи. Проигрыватель, три состояния, переходы между ними:

// Чистая функция переходов: старое состояние + действие = новое состояние.
// Ей не нужны ни DOM, ни библиотеки — поэтому она работает где угодно
function редуктор(состояние = начальноеСостояние, действие) {
  // Поле называем «тип»: настоящий Redux требует type, но это наша поделка
  switch (действие.тип) {
    case "ИГРАТЬ":
      return { статус: СОСТОЯНИЯ.ИГРАЕТ };
    case "ПАУЗА":
      return состояние.статус === СОСТОЯНИЯ.ИГРАЕТ
        ? { статус: СОСТОЯНИЯ.ПАУЗА }
        : состояние;
    case "СТОП":
      return { статус: СОСТОЯНИЯ.ОСТАНОВЛЕН };
    default:
      // Неизвестное действие не должно ломать автомат
      return состояние;
  }
}

Чтобы вынести это в отдельную «библиотеку», нужно придумать, где хранить состояние. Необходимо некое хранилище (store).

Требования короткие:

  • хранить состояние,

  • обрабатывать действия (action),

  • сообщать об изменениях.

Последний пункт — шаблон «Наблюдатель», тот же, что в статье про Jotai.

function createStore(редуктор, начальноеСостояние) {
  // Вся «магия» хранения Redux — это переменная в замыкании.
  // Второй аргумент — как у настоящего createStore(reducer, preloadedState)
  var состояние = начальноеСостояние;

  // Шаблон «Наблюдатель»: список подписчиков, которым сообщаем об изменениях
  var слушатели = new Set();

  function getState() {
    return состояние;
  }

  function dispatch(действие) {
    состояние = редуктор(состояние, действие);
    слушатели.forEach(function (слушатель) {
      слушатель();
    });
    return действие;
  }

  function subscribe(слушатель) {
    слушатели.add(слушатель);
    // Возвращаем функцию отписки — её час настанет на третьем Дне
    return function () {
      слушатели.delete(слушатель);
    };
  }

  return { getState, dispatch, subscribe };
}

Проверяем на чистом ECMAScript:

var хранилище = createStore(редуктор, начальноеСостояние);

хранилище.subscribe(function () {
  console.log("Состояние:", хранилище.getState().статус);
});

хранилище.dispatch({ тип: "ИГРАТЬ" }); // Состояние: ? Играет
хранилище.dispatch({ тип: "ПАУЗА" }); // Состояние: ⏸️ Пауза

Работает! Но это вообще похоже на настоящий Redux?

Открываем redux/src/createStore.ts и видим:

Остальное в файле — проверки аргументов, сообщения об ошибках и служебные методы.

Ни особых структур данных, ни блатных каналов хранения данных (типа document.saveValueForRedux777(value)) — никакой магии… ?‍♂️

Одно отличие всё же есть: настоящий Redux требует, чтобы поле действия называлось type — без него dispatch бросает ошибку. Единственное слово, которое ему по-настоящему дорого. Нашей поделке никто не указ — поле зовётся «тип».

Redux хранит свой store через тупейшее замыкание!

Миф №1 развенчан. Попробуем подключить к React.

День 2. Подключаем к React

Я читал, что «Redux works with any UI layer». Просто подключу библиотеку и начну использовать.

Компоненты будут читать store.getState(), кнопки отправлять действия через dispatch. Что может пойти не так?

export function Проигрыватель() {
  // Читаем состояние напрямую. Один раз. При первой отрисовке
  var статус = хранилище.getState().статус;

  return (
    <dl>
      <dt>Проигрыватель: {статус}</dt>
      <dd>
        <button onClick={() => хранилище.dispatch({ тип: "ИГРАТЬ" })}>
          Играть
        </button>
        <button onClick={() => хранилище.dispatch({ тип: "ПАУЗА" })}>
          Пауза
        </button>
      </dd>
    </dl>
  );
}

Кнопки нажимаются — это видно в консоли, но сайт не реагирует ☹️

Почему? Потому что у React своя движуха с жизненным циклом. Любая переменная, объявленная в React, не становится от этого react'ивной!

Я подробно рассказывал на Степике, но суть в том, что реактивность берётся как раз из функции setState. Мы буквально сами прописываем в своих событиях setState computeAndRenderComponent.

Так что означает «фреймворк-независимый»? На бытовом языке слышится «работает где угодно». На деле — «сам по себе не работает нигде, к каждому фреймворку нужен переходник». Миф №2 тоже потёк… ?

День 3. Пишем переходник сами

Вспомните День 1. Мы заложили в createStore метод subscribe — шаблон «Наблюдатель». Тогда он выглядел лишней церемонией: единственным подписчиком был console.log. Настал его час. Подпишем React на хранилище — осталось решить, где именно подписываться.

Попытка 1. В лоб: прямо в теле компонента.

export function ПроигрывательНаивный() {
  var [статус, установитьСтатус] = useState(хранилище.getState().статус);

  // Тело компонента выполняется на каждой отрисовке.
  // Каждая отрисовка добавляет ещё одну подписку — лавина
  хранилище.subscribe(function () {
    установитьСтатус(хранилище.getState().статус);
  });

  return <dt>Проигрыватель: {статус}</dt>;
}

Интерфейс ожил! А теперь откройте консоль и посчитайте подписки. Тело компонента выполняется на каждой отрисовке: обновление вызвало установитьСтатус, тот — новую отрисовку, та — новую подписку. Лавина.

Попытка 2. Подписка — побочный эффект. React выделил для них useEffect.

export function ПроигрывательСЭффектом() {
  var [статус, установитьСтатус] = useState(хранилище.getState().статус);

  useEffect(function () {
    // Пустой список зависимостей: подписываемся один раз, а не на каждой отрисовке
    var отписаться = хранилище.subscribe(function () {
      установитьСтатус(хранилище.getState().статус);
    });

    // Компонент умрёт — подписка не должна жить дольше него
    return отписаться;
  }, []);

  return <dt>Проигрыватель: {статус}</dt>;
}

Грабли здесь одни, и они снова про жизненный цикл: компонент можно размонтировать, а подписка сама не умрёт — хранилище продолжит дёргать установитьСтатус несуществующего компонента. Поэтому возвращаем из эффекта ту самую функцию отписки, которую заложили в subscribe ещё в Дне 1.

Попытка 3. В приложении компонентов много, и не каждому нужно всё состояние целиком. Выносим подписку в свой хук и добавляем селектор (selector) — функцию «какой кусок состояния слушаем»:

export function useSelector(селектор) {
  var [выбранное, установитьВыбранное] = useState(function () {
    return селектор(хранилище.getState());
  });

  useEffect(
    function () {
      // useState сравнивает значения: если селектор вернул то же самое,
      // React пропустит перерисовку — чужие изменения нас не волнуют
      var отписаться = хранилище.subscribe(function () {
        установитьВыбранное(селектор(хранилище.getState()));
      });

      return отписаться;
    },
    [селектор],
  );

  return выбранное;
}

В компоненте остаётся строка var статус = useSelector(выбратьСтатус);. Схема переходника целиком:

Одна тонкость напоследок: селектор объявляем снаружи компонента. Иначе на каждой отрисовке родится новая функция, useEffect увидит «новую» зависимость и будет переподписываться без конца.

Получается уже нехилая библиотека! Вот бы кто-нибудь написал её за нас…

День 4. Машина времени: лето 2015

Так написал же! И пришёл к ней ровно нашим путём — коммит за коммитом.

30 мая 2015 — Дэн Абрамов делает первый коммит в репозиторий redux. Никакого манифеста о независимости: это эксперимент вокруг Flux и горячей замены модулей (hot module replacement).

И главное: внутри redux с рождения живёт папка src/components. В ней ConnectorProvider, декораторы @provides и @connect — обычные React-компоненты для связки логики redux и среды, где она живёт. Redux зарождался не «независимой библиотекой». Redux зарождался React-библиотекой!

24 июня 2015 — коммит «subscribe moved from Connector constructor to componentDidMount». Переведу с классового на хуковый: конструктор выполняется до того, как компонент попал на страницу, а componentDidMount — сразу после. Подписка в конструкторе — подписка не в той точке жизненного цикла: обновления летят в компонент, которого на странице ещё нет. Наши грабли из Дня 3, только на классах: мы точно так же переносили subscribe из тела компонента в useEffect — в «после отрисовки». Дэн делал то же самое десять лет назад.

11 июля 2015 — день переезда. В 19:04 по Гринвичу в новом репозитории появляется первый коммит: «Initial import from gaearon/redux» — React-код переезжает в отдельный репозиторий. И только в 20:36 по Гринвичу коммит c46494b0 удаляет его из самого redux: «Remove React-specific code in favor of gaearon/redux-react». На следующий день новый репозиторий переименуют: redux-react → react-redux.

«Фреймворк-независимость» Redux — не архитектурное решение!

Шесть недель React-код жил внутри redux — потому что без него библиотека в React бесполезна. Независимость не задумывалась. Её создали — вечером 11 июля, за полтора часа.

День 5. Что там сейчас

Десять лет спустя открываем современный react-redux/src/hooks/useSelector.ts:

import { useSyncExternalStoreWithSelector } from "use-sync-external-store/with-selector.js";

Команда React сделала официальный хук для внешних хранилищ — useSyncExternalStore. Отдаёте ему subscribe и функцию чтения — он сам подписывается, перечитывает состояние и отписывается. Наш День 3 сжимается в один вызов:

// хук сам подписывается, перечитывает состояние и отписывается
export function useSelector(селектор) {
  return useSyncExternalStore(хранилище.subscribe, function () {
    return селектор(хранилище.getState());
  });
}

Этот хук — преемник библиотеки use-subscription, на которой держался разбор Jotai. Круг замкнулся: redux + react-redux и Jotai решают одну задачу — подписать компоненты на внешнее хранилище — одним и тем же механизмом. Разница лишь в том, где живёт состояние: у Redux — всё состояние в одном объекте, у Jotai — россыпь атомов.

Рабочие файлы всех этапов — в репозитории автора [Место для ссылки: папка redux-этапы].

Вывод. Если всё так сложно — зачем?

Redux хранит состояние в обычной переменной. let currentState в замыкании, строка 137 файла createStore.ts. Redux Toolkit — обёртка над ней же.

«Фреймворк-независимость» — миф! Redux был обычной React библиотекой. Просто в какой-то момент ядро вынесли в отдельный пакет.

Без react-redux Redux в React не работает. React не следит за чужими переменными. Любому внешнему хранилищу нужен переходник — сегодня это официальный хук useSyncExternalStore.

И вот мысль, что не даёт мне покоя: Если redux'у для работы с React всё равно нужна ещё одна библиотека — зачем париться и разделять? Какая мне-то выгода от «независимости», если для React я ставлю два пакета? Может, проще взять какое-то react-решение по умолчанию? Что-то родное? Что-то, что писали не для Angular, Vue и, может, React на сдачу? Jotai, например — я разбирал его полностью.

Откуда я это вычитал? Из git log самих библиотек. Клонируете redux и react-redux, листаете коммиты лета 2015 — и видите настоящие концепции вместо инфлюенсерских пересказов, провёрнутых через ИИ.

Магии вокруг хранения состояния на фронте столько, что ни ютуберы, ни ИИ уже не могут ответить как по git log коммитам

Синтаксис — ничто, понимание концепций — всё!

Если вы есть, будьте первыми! ?

Список литературы

  • createStore.ts // GitHub, reduxjs/redux. URL: github.com/reduxjs/redux (дата обращения: 05.07.2026).

  • Commit c46494b0 «Remove React-specific code in favor of gaearon/redux-react» // GitHub, reduxjs/redux. URL: github.com/reduxjs/redux (дата обращения: 05.07.2026).

  • Commit 52a2801 «Initial import from gaearon/redux» // GitHub, reduxjs/react-redux. URL: github.com/reduxjs/react-redux (дата обращения: 05.07.2026).

  • useSyncExternalStore // React. URL: react.dev (дата обращения: 05.07.2026).

  • Micro State Management with React Hooks / Daishi Kato // Packt. URL: packtpub.com (дата обращения: 05.07.2026).

  • Зачем Тьюринг изобрёл Redux? // Хабр. URL: habr.com (дата обращения: 05.07.2026).

  • Как использовать глобальное состояние в React.js? // Хабр. URL: habr.com (дата обращения: 05.07.2026).

Комментарии (20)


  1. TheHost
    14.07.2026 05:20

    У Дена абрамова есть целый курс по написанию редакса. Редакс действительно можно использовать с разными фреймворками, на беке и так далее. Это всего лишь грубо говоря паттерн.


  1. fiego
    14.07.2026 05:20

    А мне нравится pinia


  1. markelov69
    14.07.2026 05:20

    То, что redux - дно всем были известно в 2016 году. Но теперь всё это не важно, какая разница что дно, а что не дно, если твоя текущая работа разработчиком (если она пока у тебя есть) - последняя.


    1. Maestroat
      14.07.2026 05:20

      Почему?


      1. markelov69
        14.07.2026 05:20

        Почему?

        Если вы задаете такие вопросы вы скорее всего не разработчик, а если разработчик, то живете в другой реальности)

        А вообще, ответ простой:
        Вакансий (особенно реальных) стало в среднем в 20 раз меньше, чем было скажем до даже 2023 года, общее кол-во разработчиков по сравнению с каким нибудь 2020 годом увеличилось раз в 5-7, поэтому теперь вместо усредненной формулы (как было раньше):
        1 вакансия - 10 кандидатов
        Новая формула:
        1 вакансия - 1000 кандидатов

        Про вклад ИИ я даже вообще молчу и не учитываю его.

        Ну и в конечном итоге найти работу в IT сегодня (и в обозримом будущем) - нереально, особенно когда речь доходит до практики, когда ты реально её ищешь, а не думаешь что ну вот я же работаю, мои коллеги работают, значит ничего такого нет, ну уволят/уволюсь - найду другую, делов то, ведь за забором нет таких же сотен тысяч как я, особенно таких же и готовых работать за ЗП в 2-3 ниже чем вы привыкли (ибо выхода нет у них, либо так, либо никак))


        1. Lashadkach
          14.07.2026 05:20

          Квалифицированные специалисты будут нужны всегда и везде.

          То, что хайп вокруг профессии software engineer прошел это факт, но созданные системы и бизнес никуда не ушли. Проще говоря - постоянно повышаете квалификацию, желательно с подтверждением, и будет вам счастье


          1. markelov69
            14.07.2026 05:20

            Квалифицированные специалисты будут нужны всегда и везде.

            Но есть нюанс, таких специалистов сейчас минимум в 100 раз больше, чем вакантных мест для них, это раз. Для бизнеса ценность таких специалистов сильно упала, т.к. в приоритете экономия и скорость разработки фич, качество разработки ушло на 3ий план. Далее вступает второй фактор, любой самый средний мидл + ИИ закрывает 99.99999% потребностей бизнеса за ЗП в 2-3 раза ниже, чем квалифицированный специалист. А значит умножаем количество этих специалистов ещё на 50-100. Я сам овер квалифицированный специалист с опытом более 13 лет из них последние 9 лет в качестве ведущего разработчика / тех лида, но есть нюанс мои навыки никому не нужны на рынке теперь, я искал работу 1 год и 7 месяцев, прям активно, по настоящему и по взрослому, и чисто случайно мне повезло и я её нашел исключительно по невероятной удаче по знакомству. Ну так вот, это моя последняя работа в качестве it специалиста, потому что второй раз так повезти не может.

            но созданные системы и бизнес никуда не ушли.

            Правда?) А можно мне тоже розовые очки?) Много бизнеса позакрывались/обонкротилсь, много проектов полностью закрыли/заморозили, новые проекты можно сказать что в принципе никто не начинает. Так вот, в самом идеальном сценарии просто продолжают работать те, что уже есть на рынке, но вот не задача, все позиции уже заняты и никто увольняться не будет по понятным причинам больше из it, а значит мало того что на 1 уволенного уже очередь из тысяч человек, и это не приувеличение, так ещё вам даже в лотерее не дадут поучаствовать. Кстати 2 недели назад нам всем решили урезать ЗП на 30% и знаете что?) Никто даже не пикнул, все молча согласились и продолжили работать как ни в чем не бывало. А знаете что будет если завтра ещё на 50% урежут? Правильно, ничего, все так же согласятся и продолжат работать в том же духе. Знаете что было бы если бы мне урезали ЗП хоть на 5 процентов в любой период с 2012 по 2022?) Правильно, я бы уволился в этот же день и просто устроился на другую работу.


            1. dominus_augustus
              14.07.2026 05:20

              Далее вступает второй фактор, любой самый средний мидл + ИИ закрывает 99.99999%

              Это скорее говорит о проектах над которыми работает человек, а не показывает реальную картину

              Я сам овер квалифицированный специалист с опытом более 13 лет из них последние 9 лет в качестве ведущего разработчика / тех лида, но есть нюанс мои навыки никому не нужны на рынке теперь

              Работу стало найти кратно сложнее, это факт, но если сложилась такая картина, может все таки не овер? ;)


              1. markelov69
                14.07.2026 05:20

                Реальную картину показывает тот факт, что работу нынче найти просто нереально. Вот и всё, все остальное на самом деле вообще пофигу, какие там конкретно причины и т.п. соискателя не волнует, его волнует лишь одно, будет ли он в принципе трудоустроен или нет) 1 из 500 вытянет счастливый билет и получить оффер, остальные увы и ах

                Работу стало найти кратно сложнее, это факт, но если сложилась такая картина, может все таки не овер? ;)

                1) Не просто кратно, а на 2 порядка.
                2) Овер, но твои реальные навыки играют вообще третьестепенную роль, на первом месте фарт, после фарта пропасть, а дальше уже все остальное.
                3) До собеседования даже дело не доходит в принципе, дело даже до общения с реальным человеком (hr'ом) не доходит.


                1. AlekseiVolkov Автор
                  14.07.2026 05:20

                  Я сам не знаю правды. Но вижу парадокс.

                  Одни говорят, что найм сломан. Кадровики тупые, жестокие. Соискатели хитрые врунишки.

                  Но с другой стороны есть обычные компании, которые идут вперёд: *AANG, OpenAI, Яндекс, Т-банк, ВКонтакте.

                  В них то уж точно метят все врунишки со всего света. И поток кандидатов был огромным и до 2019. Но корпорации не загнулись, наоборот только растут.

                  Как они справляются с наймом? Как удаётся найти толковых из миллионов? Как толковым удаётся туда пробиться среди миллионов?


                  1. markelov69
                    14.07.2026 05:20

                    Но корпорации не загнулись, наоборот только растут.

                    Понятно, вы тоже из параллельной вселенной?) Где это видите? Штат разработчиков сокоращается у всех. В лучшем случае он просто не изменился с 2022 года, но это исключение из правил. Ну и да, по поводу роста, вас обманули) Когда реальные расходы у граждан падают, то никакого роста быть не может, ибо граждане просто перестают тратить деньги на всякую шелуху не важную для реальной жизни. Это относится вообще к любым категориям товаров и услуг, я например когда-то пользовался регулярно доставкой из всяких ресторанов и т.п., а потом они начали поднимать цены и я подумал, да нах оно мне надо, и просто уже года 3 у меня больше этой статьи расхода, тоже самое касается например чипсов, соков и т.п.) Просто есть у каждого человека границы терпимости к наглости, и когда эти границы выходят за пределы, то просто те вещи, которые ни на что не влияют просто пропадают из твоей жизни) Или вот кстати с шоколадом прикольный пример, Россия щедрая душа задрала цены до небес на него, его продавали по 100+ рублей за 75 грамм много месяцев, и его просто почти никто не покупал, и что я вижу сегодня?) Теперь в пятерке/магните его же продают по 69 руб) Почему?) да потому что если ты перестанешь есть шоколад, тов твоей жизни ничего в худшую сторону не изменится) Я кстати тоже переставал его есть пока цены задрали, сейчас пока по 69р я его опять покупаю и ем)

                    Как они справляются с наймом? 

                    Легко, они не нанимают. Т.к. после начала 2024 увольнение - выход из профессии. Просто никто не увольняется и работают те же.

                    И да, найм сломан только для соискателей. Для работодателей нет проблем, потому что им не важно 10 собесов провести или 100, а на уровне HR скринигна и так можно отсеять мусор, и сегодня ровно 0% потребности в по настоящему сильных разрабах, потому что любой самый стандартный мидл + ИИ === любой супер крутой senior. Вот и все дела. Так что заодно обесценился наш опят и знания.

                    Как удаётся найти толковых из миллионов?

                    Даже если кто-то сойдет с ума и уволится сам, то ему не ищут замену, его работу на себя берут другие, вот и всё. Нет смысла даже искать новых людей. А тем более сейчас начальство легко может борзеть и заставлять делать больший объем работы с помощью ИИ с потом 1 человек + ИИ = 3-4 человека без ИИ. Нравится вам или нет, а для них это вопрос оптимизации серьезных расходов.

                    Как толковым удаётся туда пробиться среди миллионов?

                    Ну смотрите вот есть 10тыс толковых, прям вообще одинаковые, ну да, 100 из них в течении года смогут вытянуть на шару выйгрышный билет и найти работу, а остальные увы и ах.

                    P.S. ну опять, т.к. вы сейчас трудоустроены, вам все это пофигу и вы никогда в жизни не поверите в то, что теперь нельзя найти работу программистом(кроме шары в виде 0.001% шанса), а вот когда придет время(а оно придет это 100% вне зависимости от того в насколько "надежной" компании вы работаете) и вас уволят/сократят/заморозят ваш проект/и 100500 любых других причин и вы начнете реально искать работу, тогда ваш розовый мир быстро рухнет и вы очнетесь в реальности) Но пока вы трудоустроены, могу лишь посоветовать ни при каких сценариях не увольняться, либо перед увольнением освоите другую профессию, из реального мира, не it. Я тоже в своё время был уверен что т.к. я крутой специалист, на меня всегда будет спрос, а потом бац и наступила реальность, как бы ты нафиг никому не нужен и если 1 собеседование будет у тебя за 4 месяца, то это уже успех, но в любом случае шанс что после этого собеса тебе сделаю оффер около нулевой.


        1. TheHost
          14.07.2026 05:20

          Фронта сейчас найти очень сложно. Большинство не могут ответить разницу между var и let. Рисуя себе 5+ лет опыта


          1. clerik_r
            14.07.2026 05:20

            Фронта сейчас найти очень сложно

            От создателей комедий в стиле "В России дефицит IT специалистов". Насмешили конечно, ну вот он я, ищу работу больше года (дефицит специалистов же :D:D:D), senior/lead/tech lead, нанимайте. Опыта вагон, а именно в специализации фронта - 11 лет.

            Большинство не могут ответить разницу между var и let. Рисуя себе 5+ лет опыта

            Да, на 1 вакансию 5000тыс людей, и да из них только 500 реальных разработчиков. Поэтому вместо 1 к 5000 мы имеем 1 к 500, но если вы среди этих 5тыс не можете на этапе HR скрининга отсеивать тех кто реально не бе не ме ни кукареку, то у вас просто сломан найм. Спойлер, найм сломан вообще у всех сейчас в отрасли, ибо нереально отсеять всякий шлак от реальных разрабов. Поэтому у вас может создаться иллюзия что якобы реальных разработчиков мало, но в реальности их навалом, просто вы их резюме либо не замечаете, либо отсеиваете думая что это шлак.


            1. TheHost
              14.07.2026 05:20

              Отпишусь в ЛС


  1. cmyser
    14.07.2026 05:20

    Выбирая реакт - вы строите свой недофреймворк из г и палок)


  1. adminNiochen
    14.07.2026 05:20

    Код на русском и с var - серьёзно??


    1. AskePit
      14.07.2026 05:20

      пришел на redux, попал на 1С


    1. AlekseiVolkov Автор
      14.07.2026 05:20

      Так а чего все начали безосновательно использовать `let`? Как писали выше, никто и не скажет, что изменится если код переписать с `let`.


      Мне стало обидно за обычные копеечные ключевые слова и русский синтаксис)


  1. baxxter
    14.07.2026 05:20

    Какая мне-то выгода от «независимости», если для React я ставлю два пакета?

    Почти всегда для всех популярных библиотек ставится 2 пакета - базовый и обертка под реакт. Либо это будет один пакет, у которого под капотом в devDeps ставится базовый. Автор похоже никогда и не работал с реакт раз в 2026 задаётся такими вопросами и ковыряет redux, который сейчас используют разве что в дремучем legacy и брать его в новые проекты уже лет 5-7 назад считалось моветоном.


    1. AlekseiVolkov Автор
      14.07.2026 05:20

      Да, я мало работал в стартапах, где код начинали писать в 2024.

      Обычно это стабильно работающие бизнесы, которым по 10+ лет.
      Им ни Jotai, ни, как писали выше, качество кода нужно. Им нужен стабильно работающий бизнес ещё лет на 10)