Зачем использовать react.useContext, если вы уже используете избыточность? Я изо всех сил пытаюсь понять, какую выгоду предлагает react.useContext по сравнению с избыточностью. Есть ли что-то, что мне не хватает?
Я пытаюсь глубже понять react.useContext и redux. Поэтому, пожалуйста, объясните, почему один технически больше подходит для определенной ситуации, чем другой. Каковы технические различия?
@ДэниелБек. Спасибо за ваш ответ и ссылку. Я понимаю вопрос о вопросе, основанном на мнении. Иногда вам нужно, чтобы кто-то дал вам вариант + факты, чтобы лучше контекстуализировать вещи.
Я бы порекомендовал прочитать любую из сотен существующих статей по этой теме, вместо того, чтобы задавать основанный на мнении вопрос, который, как вы знаете, здесь не разрешен, и получать расплывчатые и вводящие в заблуждение ответы, подобные приведенному ниже.
@DanielBeck на самом деле это не основано на мнении. Между ними есть явные технические различия, поэтому на вопрос можно ответить осмысленно.
Ну… кстати, дубликат этого вопроса, на который я ссылался выше, был закрыт как основанный на мнении…
@DanielBeck да, потому что автор этого поста попросил мнения, используя именно это слово. Кроме того, этот вопрос был задан 4 года назад, когда Контекст был еще новым, и о нем еще не было много информации. В настоящее время на этот вопрос может быть четкий технический ответ, и мы видим, что он возникает довольно часто — закрытие его как «основанного на мнении» каждый раз не помогает ответить на него — и тем не менее каждый раз, когда он получает «этот вопрос». должен быть закрыт, потому что он основан на мнении» комментарий :/
Я предполагаю, что наши мнения о том, основано ли это на мнении, различаются ¯_(ツ)_/¯ Может быть, мы сможем найти общий язык по поводу «дубликатов»?
Крюк React useContext
и Redux — это инструменты управления состоянием, но они предназначены для удовлетворения различных потребностей в приложении React.
Redux — это централизованное хранилище, которое может хранить все состояние приложения, а его действия и редукторы управляют обновлениями состояния. Это полезно, когда у вас есть сложные или большие потребности в управлении состоянием, и вы хотите поддерживать единый источник правды для своего состояния.
С другой стороны, useContext
hook — это более простая альтернатива Redux, особенно когда ваши потребности в состоянии небольшие или локальные. Он предоставляет способ передачи данных от родительского компонента к его дочерним компонентам без необходимости передавать данные вниз в качестве реквизита через каждый уровень. Это может сделать ваш код более читабельным и удобным для сопровождения.
Таким образом, вы можете использовать либо useContext
, либо Redux, в зависимости от сложности и размера ваших потребностей в управлении состоянием. Если у вас есть простые потребности в состоянии, вы можете использовать useContext
, но если ваши потребности в состоянии более сложные или большие, вы можете использовать Redux для более эффективного управления ими.
Итак (по вашему мнению), если я уже использую избыточность, нужен ли мне useContext?
Context и Redux делают две разные вещи.
Контекст — это механизм передачи одной редко меняющейся переменной вниз по дереву. Всякий раз, когда эта переменная изменяется, все потребители перерисовываются, поэтому ее лучше всего использовать для передачи таких вещей, как тема или соединение WebSocket, используемое во многих компонентах. Это более полезно для внедрения зависимостей.
С другой стороны, Redux предназначен для управления простыми объектами (например, WebSocket сюда не подходит), хранения данных и эффективной подписки на детальные изменения в этих данных.
Так что, вероятно, вы будете использовать Context и библиотеку управления состоянием (есть также альтернативы, такие как MobX, Recoil, XState, Jotai, Zustand или Valtio) бок о бок для разных целей. Для получения дополнительной информации вы можете, например, прочитать эту статью.
Спасибо. Ваш ответ заставил меня понять и дал мне новые знания. Для сокетов используйте контекст. Понятно!
Stack Overflow не задает такие вопросы, основанные на мнении, но быстрый поиск приводит к сотням статей, сравнивающих useContext и redux и описывающих, когда их использовать. (Некоторые из них даже здесь.)