@Maksum70
СТудент

Как работает react context?

в оф доке реакта про контекст в примерах все показано через state, что если мы хотим что-то поменять в контексте, то нам надо через конекст прокидывать callback на изменение state и только потом поменяется context, получается что без корневого state мы в контексте не сможем поменять данные????
и вопрос в догонку про редакс, как мы знаем, редакс работает на контекстах, получается там скорее всего такая же логика, что при изменении стора, у нас перерисовывется корневой элент и за ним все остальные, но там уже нам помогает coonect не перерисовывать лишний раз компоненты, у которых пропсы не поменялись?
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
kleinmaximus
@kleinmaximus
Senior Full-stack Javascript Developer
Провайдер контекст транслирует дочерним компонентам какое-то значение.

Это может быть состояние (реактивное и изменяемое), могут быть какие-то функции (например, для изменения состояния), может быть вообще просто нативный объект (например, какая-то конфигурация приложения, которую не нужно менять) или просто константа (ну, вдруг пнадобится). Тут все зависит от того, что требуется передать вниз по дереву компонентов.

Соответственно, если нужно что-то изменяющееся, отслеживаемое и реактивное, то да, надо передавать состояние (state провайдера) и без него никак.

Это очень похоже на Redux. Но не стоит беспокоиться, что на каждый чих провайдер будет перерисовывать все дерево. Просто детей надо передавать в провайдер через children. В таком случае при изменении стейта будут ререндериться только Consumer-ы этого контекста (или те компоненты, которые используют useContext).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы