ПЕРВЫЙ НАУЧНЫЙ
Канал Здравого Смысла - https://www.youtube.com/user/SENSUSCOMMUNE __________________________________________________________________ Третье, итоговое, «каноничное» издание «Первой научной истории войны 1812 года»: https://www.ozon.ru/context/detail/id/162364090/ Рецензии историков на книгу: https://ponasenkov.net/istoriki-o-knige-evgeniya-ponasenkova-o-1812-gode/
Канал · 9102
2 года назад
React Redux vs React Context React Redux и React Context — два популярных варианта управления состоянием в приложениях React. У обоих есть свои плюсы и минусы, и может быть сложно определить, какой из них лучше всего подходит для вашего проекта. В этой статье мы сравним два подхода и рассмотрим их преимущества и недостатки. React Redux — это библиотека управления состоянием, разработанная специально для использования с React. Он следует принципам архитектуры Flux, которая способствует однонаправленному потоку данных и разделению задач. Redux использует глобальное хранилище для хранения состояния приложения, а также действия и редукторы для изменения этого состояния. Такой подход упрощает отладку и отслеживание изменений состояния, а также обеспечивает четкое разделение задач между представлением и состоянием. Одним из главных преимуществ React Redux является его простота. Хранилище, действия и редюсеры следуют предсказуемой схеме, что упрощает понимание и работу с ними. Он также хорошо документирован и имеет большое сообщество разработчиков, а это означает, что доступно множество ресурсов, которые помогут вам начать работу. Однако у React Redux есть и свои недостатки. Одна из основных проблем заключается в том, что это может быть излишним для небольших проектов, поскольку для настройки и реализации требуется много шаблонного кода. Это также может быть трудно понять для новых разработчиков, так как это требует глубокого понимания архитектуры Flux и шаблона Redux. React Context, с другой стороны, является более новой функцией в React, которая позволяет вам передавать данные вниз по дереву компонентов без необходимости сверления реквизитов. Он работает путем создания объекта Context и компонента Provider, что позволяет передавать данные напрямую любому компоненту, являющемуся потомком Provider. Одним из основных преимуществ React Context является то, что он устраняет необходимость сверления реквизитов, что может стать громоздким в больших приложениях. Это также позволяет вам обмениваться состоянием между компонентами, которые не связаны напрямую, что делает его подходящим для глобального управления состоянием. Однако React Context также имеет свои ограничения. Одна из основных проблем заключается в том, что новым разработчикам может быть трудно понять, поскольку это более новая функция и она не так хорошо документирована, как React Redux. В нем также отсутствует разделение проблем и однонаправленный поток данных, который обеспечивает Redux, что может затруднить отладку и отслеживание изменений состояния. В заключение, как у React Redux, так и у React Context есть свои плюсы и минусы. React Redux — это проверенное и проверенное решение для управления состоянием, простое для понимания и хорошо задокументированное, но может оказаться излишним для небольших проектов и требует глубокого понимания архитектуры Flux. React Context — это более новая опция, которая отлично подходит для устранения детализации свойств и совместного использования состояния между несвязанными компонентами, но может быть трудной для понимания и не разделяет задачи Redux. В конечном счете, выбор между ними будет зависеть от конкретных потребностей вашего проекта. ofolio.ru/...154
​​⚠️ Проблемы React Context Использование контекста реакта и хуков, упрощает управление состоянием приложения. В небольших проектах уж и вовсе позволяет отказаться от использования менеджеров состояний. Но у него есть ряд проблем, о которых необходимо знать. 1️⃣ Дизайн по умолчанию, не совсем безопасен. 1. Логика хранения стейта и его изменения разбросана между контекстом и использующими его компонентами 2. Значение value контекста необходимо мемоизировать с помощью useMemo 3. Если компонент, не нашёл контекст в родительских узлах — он будет молча использовать значения по-умолчанию. Мы не увидим никаких предупреждений или ошибок Эти проблемы и их решения рассматривается в статье React: How I learned to create optimized contexts ✅ Вместо использования контекста напрямую, нужно: - Указать null в качестве значения по-умолчанию для контекста - Реализовать useSafeContext — кастомный хук, который будет проверять, что значение не null - Реализовать SafeContext — компонент, который содержит логику инициализации значения реакт контекста 2️⃣ Отсутствие атомарных обновлений — компоненты или хуки, которые используют контекст, перерендеривается каждый раз, когда контекст изменяет состояние. Даже если ваш компонент использует лишь одной свойство из контекста, которое никогда не изменяется — компонент будет перерендериваться при изменении любого другого свойства в контексте. ✅ Как решить проблему? - Не класть всё в один большой контекст, а разбить его на несколько маленьких - Использовать библиотеку для управления состоянием, например, zustand - Минимизировать использование контекста. Например, можно использовать контекст в родительском компоненте, а дочерним передать нужные значения через пропсы. Проблемы и решения описаны в статье The Problem with React's Context API (тут перевод на русский). #fridayreading #react #frontend #statemanagement