Зачем использовать 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
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
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

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