Почему вам следует создать крючок для использования контекста
В React у нас есть потрясающий способ передавать реквизиты и функции установки глубоко вложенным дочерним компонентам, не передавая их по отдельности в последующих компонентах. Мы делаем это, используя концепцию Provider-Context.
Вот как это работает:
Так в чем же проблема?
Предположим, нам нужно использовать один и тот же контекст в нескольких компонентах. Вот как будут выглядеть наши компоненты.
Вы заметили проблему?
Давайте запишем проблемы:
- В каждом компоненте нам нужно носить с собой
ThemeContext
, мы должны импортировать его вместе сuseContext
. - В каждом компоненте мы должны вызывать крючок
useContext
с помощьюThemeContext
. - Если мы используем TypeScript, нам нужно добавить дополнительную проверку, чтобы убедиться, что мы получаем данные в контексте, поскольку изначально мы использовали
null
для инициализации илиThemeContext
.
Каково решение?
Как обычно, решение заключается в специальном хуке. ⚓️
- Убедитесь, что для вашего контекста существует отдельный компонент.
- создайте собственный
hook
, который будет отвечать за вызовuseContext
, защиту типов и возврат контекста.
После использования этого хука наши компоненты будут выглядеть так: