Има ли ситуации, в които не се нуждаете от Redux? Разбира се, но това винаги е било вярно.

Напоследък имаше много дебати и объркване около статуса на Redux в екосистемата на React. Някои хора твърдят, че Redux е мъртъв или че е заменен от по-нови алтернативи. В тази статия ще се потопим в погрешните схващания около Redux и ще обясним защо той все още е подходящ и мощен инструмент за управление на състоянието в React приложения.

Redux: обратната реакция и прекомерната употреба

Redux, представен през 2015 г., спечели огромна популярност в общността на React. Въпреки това, както при всяка широко възприета технология, имаше обратна реакция поради прекомерната й употреба и някои разработчици, които не разбираха напълно нейните компромиси. На много хора беше казано, че трябва да използват Redux, без да обмислят дали това е най-подходящото за техните конкретни случаи на употреба. Това доведе до твърдения, че Redux е мъртъв или че трябва да бъде заменен от други библиотеки за управление на състоянието или персонализирани решения.

Важно е да разберете, че поддържащите Redux винаги са признавали, че Redux може да не е необходим за всеки проект. Те подчертаха важността на разбирането на компромисите и ползите, преди да решат да използват Redux. Така че, докато някои разработчици може да са се отдалечили от Redux, той все още поддържа значителна потребителска база и продължава да бъде широко възприет в приложения от реалния свят.

Новият контекстен API: Замяна на Redux?

С пускането на React 16.3 беше въведена нова стабилна версия на контекстния API. Контекстът е предназначен за предаване на данни към дълбоко вложени React компоненти, случай на употреба, който често се цитира като причина за използването на Redux. В резултат на това имаше твърдения, че новият контекстен API ще замени Redux.

Докато новият контекстен API е отличен за предаване на данни към дълбоко вложени компоненти, той не предоставя същите възможности като Redux. Context сам по себе си не предлага функции като Redux DevTools, проследяване на актуализацията на състоянието, междинен софтуер за централизирана логика на приложението или други мощни възможности, които Redux предоставя. Освен това контекстът е предимно механизъм за предоставяне на стойност на поддърво от компоненти и не управлява самостоятелно състоянието.

Струва си да се отбележи, че React-Redux използва контекст вътрешно, но само за предаване на екземпляра на магазина Redux, а не на текущата стойност на състоянието. Разликите между контекст и React-Redux се обсъждат подробно в различни ресурси, включително публикации от поддържащи Redux.

GraphQL: Замяна на Redux?

GraphQL и неговият популярен клиент, Apollo, спечелиха значително внимание в екосистемата на React. Някои статии твърдяха, че GraphQL може да замени Redux, особено с възможностите на Apollo за управление на състоянието от страна на клиента.

Въпреки че GraphQL, особено с Apollo, може да намали или елиминира необходимостта от свързан с извличане на данни Redux код, той не замества непременно изцяло Redux. Redux предоставя допълнителни възможности извън извличането на данни, като запазване на потребителски данни чрез презареждане на страници и прилагане на сложна логика на работния процес. Въпреки че внедряването на състоянието на клиента на Apollo може да е подходящо за някои случаи на употреба, има ситуации, при които Redux може да бъде по-подходящ.

API на Hooks на React: Краят на Redux?

API на Hooks на React, представен на ReactConf 2018, позволява на функционалните компоненти да имат състояние и да изпълняват странични ефекти след актуализация. Някои разработчици предполагат, че useReducer(), useContext() и актуализираният контекстен API ще премахнат нуждата от Redux.

Вярно е, че useReducer() позволява актуализации на състоянието с помощта на редуктори без хранилище Redux, а useContext() позволява предаване на стойности през дървото на React без prop-drilling. Redux обаче предлага допълнителни функции като отстраняване на грешки при пътуване във времето, междинен софтуер и разширението Redux DevTools, които не са налични само с куки. Напълно валидно е да използвате куки и Redux заедно, като се възползвате от предимствата и на двата подхода.

Бъдещето на Redux

Като поддържащ Redux, мога уверено да кажа, че Redux няма да отиде никъде. Основната библиотека е стабилна, широко използвана и непрекъснато се поддържа и подобрява. Въпреки че има други опции за управление на състоянието в екосистемата на React, Redux остава уместен поради няколко причини:

  1. Последователни архитектурни модели: Redux предоставя ясни и последователни модели за управление на състоянието в приложенията.
  2. Възможности за отстраняване на грешки: Разширението DevTools на Redux позволява мощно отстраняване на грешки и отстраняване на грешки при пътуване във времето.
  3. Мидълуер: Екосистемата на мидълуер на Redux позволява добавяне на централизирана логика на приложението, като регистриране, API извиквания и др.
  4. Добавки и разширяемост: Redux има богата екосистема от добавки и разширения, които предоставят допълнителни функции и интеграции.
  5. Използване на различни платформи и рамки: Redux може да се използва с различни рамки, без да се ограничава до React.
  6. Производителност: В зависимост от настройката на вашето приложение, Redux може да предложи по-добра производителност в сравнение с използването само на контекст.

За да направи работата с Redux още по-лесна, екипът на Redux представи Redux Toolkit, официален пакет, който опростява обичайните случаи на използване на Redux и насърчава най-добрите практики. React-Redux също представи API за кукички, който предоставя по-прост и по-интуитивен начин за използване на Redux във функционални компоненти.

Към декември 2020 г. екипът на Redux също пусна експериментална библиотека за извличане и кеширане на данни, наречена RTK Query, създадена за Redux Toolkit. Това допълнение допълнително демонстрира ангажимента за подобряване на екосистемата Redux.

В заключение, Redux все още е много подходящ и широко използван в екосистемата на React. Въпреки че има алтернативни опции за управление на състоянието, Redux предлага уникални възможности и стабилна екосистема, която продължава да привлича разработчиците. Като разберете компромисите и ползите, можете да вземете информирани решения за това дали Redux е правилният избор за вашия конкретен случай на употреба.