Зачем использовать react.useContext, если вы используете избыточность? Каковы технические различия?

Зачем использовать react.useContext, если вы уже используете избыточность? Я изо всех сил пытаюсь понять, какую выгоду предлагает react.useContext по сравнению с избыточностью. Есть ли что-то, что мне не хватает?

Я пытаюсь глубже понять react.useContext и redux. Поэтому, пожалуйста, объясните, почему один технически больше подходит для определенной ситуации, чем другой. Каковы технические различия?

Stack Overflow не задает такие вопросы, основанные на мнении, но быстрый поиск приводит к сотням статей, сравнивающих useContext и redux и описывающих, когда их использовать. (Некоторые из них даже здесь.)

Daniel Beck 13.02.2023 06:04

@ДэниелБек. Спасибо за ваш ответ и ссылку. Я понимаю вопрос о вопросе, основанном на мнении. Иногда вам нужно, чтобы кто-то дал вам вариант + факты, чтобы лучше контекстуализировать вещи.

YulePale 13.02.2023 07:06

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

Daniel Beck 13.02.2023 07:23

@DanielBeck на самом деле это не основано на мнении. Между ними есть явные технические различия, поэтому на вопрос можно ответить осмысленно.

phry 13.02.2023 08:55

Ну… кстати, дубликат этого вопроса, на который я ссылался выше, был закрыт как основанный на мнении…

Daniel Beck 13.02.2023 09:01

@DanielBeck да, потому что автор этого поста попросил мнения, используя именно это слово. Кроме того, этот вопрос был задан 4 года назад, когда Контекст был еще новым, и о нем еще не было много информации. В настоящее время на этот вопрос может быть четкий технический ответ, и мы видим, что он возникает довольно часто — закрытие его как «основанного на мнении» каждый раз не помогает ответить на него — и тем не менее каждый раз, когда он получает «этот вопрос». должен быть закрыт, потому что он основан на мнении» комментарий :/

phry 13.02.2023 23:41

Я предполагаю, что наши мнения о том, основано ли это на мнении, различаются ¯_(ツ)_/¯ Может быть, мы сможем найти общий язык по поводу «дубликатов»?

Daniel Beck 14.02.2023 14:39
Слишком много useState? Давайте useReducer!
Слишком много useState? Давайте useReducer!
Современный фронтенд похож на старую добрую веб-разработку, но с одной загвоздкой: страница в браузере так же сложна, как и бэкенд.
Создание микрофронтендов с Angular и федерацией модулей в монорепо: Пошаговое руководство
Создание микрофронтендов с Angular и федерацией модулей в монорепо: Пошаговое руководство
Микрофронтенды стали популярным архитектурным паттерном для веб-разработки. С появлением федерации модулей в Webpack 5 реализация микрофронтендов...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Революционная веб-разработка ServiceNow
Революционная веб-разработка ServiceNow
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По...
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
1
7
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Крюк React useContext и Redux — это инструменты управления состоянием, но они предназначены для удовлетворения различных потребностей в приложении React.

Redux — это централизованное хранилище, которое может хранить все состояние приложения, а его действия и редукторы управляют обновлениями состояния. Это полезно, когда у вас есть сложные или большие потребности в управлении состоянием, и вы хотите поддерживать единый источник правды для своего состояния.

С другой стороны, useContext hook — это более простая альтернатива Redux, особенно когда ваши потребности в состоянии небольшие или локальные. Он предоставляет способ передачи данных от родительского компонента к его дочерним компонентам без необходимости передавать данные вниз в качестве реквизита через каждый уровень. Это может сделать ваш код более читабельным и удобным для сопровождения.

Таким образом, вы можете использовать либо useContext, либо Redux, в зависимости от сложности и размера ваших потребностей в управлении состоянием. Если у вас есть простые потребности в состоянии, вы можете использовать useContext, но если ваши потребности в состоянии более сложные или большие, вы можете использовать Redux для более эффективного управления ими.

Итак (по вашему мнению), если я уже использую избыточность, нужен ли мне useContext?

YulePale 13.02.2023 07:07
Ответ принят как подходящий

Context и Redux делают две разные вещи.

Контекст — это механизм передачи одной редко меняющейся переменной вниз по дереву. Всякий раз, когда эта переменная изменяется, все потребители перерисовываются, поэтому ее лучше всего использовать для передачи таких вещей, как тема или соединение WebSocket, используемое во многих компонентах. Это более полезно для внедрения зависимостей.

С другой стороны, Redux предназначен для управления простыми объектами (например, WebSocket сюда не подходит), хранения данных и эффективной подписки на детальные изменения в этих данных.

Так что, вероятно, вы будете использовать Context и библиотеку управления состоянием (есть также альтернативы, такие как MobX, Recoil, XState, Jotai, Zustand или Valtio) бок о бок для разных целей. Для получения дополнительной информации вы можете, например, прочитать эту статью.

Спасибо. Ваш ответ заставил меня понять и дал мне новые знания. Для сокетов используйте контекст. Понятно!

YulePale 13.02.2023 10:45

Другие вопросы по теме