Контекст в React

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

Обычно мы передавали данные от родительских компонентов дочерним с помощью пропсов. Этот способ хорош, если у вас немного компонентов и вам не нужно перебрасывать пропсы от родительского до нужного вам компонента через дочерние более 2-3 раз.

Данный способ также может стать крайне неудобным и привести к различным проблемам, если в промежуточных компонентах эти пропсы вообще не используются (такая проблема называется prop drilling), или вам нужно передавать одни и те же данные большому количеству компонентов.

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

Для того, чтобы воспользоваться контекстом, его нужно создать. Для начала, создадим файл MyContext.js и импортируем в него функцию createContext:

import { createContext } from 'react';

Теперь создадим объект контекста, запишем его в переменную MyContext, которую не забудем экспортировать. В нашем случае, мы установили в createContext начальное значение null, так как нам оно непринципиально (можно было оставить просто пустые скобки). Заданное значение по умолчанию появится при чтении контекста, если не будет найдено каких-то других. Данное значение может быть любого типа:

export const MyContext = createContext(null);

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

Давайте теперь импортируем MyContext.js в пустой компонент App - в тот компонент, из которого мы собираемся передавать данные:

import { MyContext } from './MyContext.js';

Создайте файл MyContext.js и импортируйте его в пустой компонент App, как описано в уроке.



Чат с GPT Компилятор