Правильное использование React Context API

Context API — это современный способ управления состоянием в React. Предназначен для совместного использования части данных между многими компонентами React без детализации. В этой статье мы разберем недостатки контекстного API, фабрику логических оберток и действий.

Недостатки контекстного API

Давайте рассмотрим основные недостатки контекстного API:

Повторяющиеся задачи

Почти каждый раз, когда мы используем Context API во внешнем приложении, приходится сталкиваться с тем же самым: мы создаем AuthContext, как показано ниже:

Поставщик контекста аутентификации

Затем используем состояние входа в любом месте нашего приложения:

Применение

Представьте себе, что в вашем приложении 60 компонентов, защищенных аутентификацией. Ваша кодовая база будет в беспорядке!


Каковы проблемы с этим подходом?

  • Грязный код
  • Постоянное повторение большого количества кода

Легко испортить вашу кодовую базу

Предположим, у вас есть контекст и прикрепленный к нему компонент ContextProvider.

В том же компоненте, где вы предоставили контекст, вы хотите использовать контекст для кнопки, как показано в примере ниже:

Компонент А обеспечивает и потребляет!

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

Обходной путь

Но теперь мы снова в зоне повторяющихся задач.

Фабрики компонентов спешат на помощь

Фабрика компонентов — это функция, которая возвращает функциональный компонент React. () => () => <div></div>

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

Логические оболочки

Логические оболочки решают проблемы условного рендеринга, которые мы видели вначале, без необходимости портить вашу кодовую базу. Вы создаете их с помощью этой функции:

Логические оболочки

Тогда нашу прежнюю проблему можно решить всего за несколько строк кода:

Использование условных оберток

Вы можете сэкономить массу времени, используя эту фабрику компонентов для каждого создаваемого вами контекста.

Контекстные действия

Контекстные действия представляют собой компоненты, допускающие многократное использование, из-за способа их создания.

Создать контекстное действие

Теперь мы можем создать это ComponentB всего лишь с помощью одной строки кода!

Использование действий

Теперь вы должны спросить себя: зачем вам добавлять свойство className в контекстное действие? Причина проста: возможность повторного использования. Лучший способ продемонстрировать это на примере:

Многоразовое использование