С возвращением, друзья!
Сегодня мы рассмотрим основы React Hook под названием useContext. useContext — это мощный инструмент, который выходит за рамки useState и создает глобальное состояние State, которое может передавать информацию дочерним и внуковым компонентам без прямой передачи реквизитов.
Но я забегаю вперед.
Если вы не знакомы с useState, сначала прочитайте мою предыдущую статью, а затем вернитесь и приготовьтесь удивиться!
Как использовать useState: https://dev.to/deborah/how-to-use-state-in-react-2pah
Теперь, когда вы разобрались с useState, давайте углубимся в useContext!
useContext идеально подходит для данных, которые необходимо разместить в глобальной области (например, имя пользователя, которое будет держать кого-то в системе на протяжении всего приложения), но это не универсальный ярлык для передача реквизита дочерним компонентам.
Однако useContext позволяет нам передавать данные без прямой передачи реквизитов и поэтому чрезвычайно полезен, когда мы сталкиваемся с данными, к которым необходимо получить доступ нескольким дочерним компонентам или которые должны быть доступны для всего приложения.
Чтобы запустить useContext, нам нужно сделать два шага: сначала нам нужно создать объект контекста («createContext»), затем нам нужно получить доступ к значению через провайдера с помощью перехватчика «useContext». .
Следующие примеры были упрощены, чтобы дать вам лучшее представление о том, что такое useContext и как его использовать, но вы должны знать, что createContext часто объявляется в отдельном файле. Однако я сравниваю Parent.js с типичным файлом App.js (компонентом, находящимся на вершине иерархии компонентов). Parent.js — это место, где я определил все свои переменные состояния, функции, которые обновляют эти переменные состояния, и выполнил выборку данных в базе данных с помощью useEffect. Я решил объявить createContext в своем компоненте верхнего уровня вместо создания собственного файла, чтобы упростить это объяснение и помочь вам лучше понять основные концепции контекста.
export Context = React.createContext();
Контекст — это объект контекста, созданный вызовом createContext. Объект контекста содержит компонент под названием Provider, который мы теперь сможем вызывать, а затем передавать переменные и функции, которые мы хотим сохранить на нашем «глобальном» уровне.
return(// Other JSX & the child components we want to hand Context to. );
Чтобы завершить «Context.Provider», нам также необходимо указать значение для «Provider». Здесь мы передадим объект со всеми переменными и функциями, которые мы будем вызывать с помощью «Контекста» в дочерних компонентах:
return(// Other JSX & the child components we want to hand Context to. );
ОЧЕНЬ ВАЖНО отметить, что нам нужно поместить ВСЕ дочерние компоненты, которые будут использовать переменные и функции, между тегами. Например:
return();
Обратите внимание, что нам не нужно передавать какие-либо реквизиты непосредственно дочерним компонентам (как в случае с useState), если мы помещаем реквизиты внутри value.
Теперь, когда мы использовали createContext и передали все наши глобальные элементы в «Context.Provider», мы готовы перейти к дочерним компонентам и посмотреть, как использовать «Context».
import Context from ‘./Parent.js’;
import React, { useContext } from ‘react’; import Context from ‘./Parent.js’;
import React, { useContext } from ‘react’; import Context from ‘./Parent.js’; function Child(){ const { example, setExample } = useContext(Context) // The rest of our code
В этом коде мы используем фигурные скобки {} для обозначения назначения деструктуризации. Это необычный способ сказать, что мы можем вызывать несколько переменных и функций, хранящихся в контексте. Мы также передаем «Контекст» в «useContext», чтобы иметь доступ к значениям, определенным в Context.Provider (который мы объявили в «Parent.js»).
const expId = example.id;
или
setExample(newExample);
Поздравляем! Теперь у вас есть все инструменты для начала работы с createContext и useContext. Вы понимаете, что useContext позволяет вам создать что-то вроде «глобального состояния», которое может передавать переменные и функции компонентам без передачи реквизитов напрямую через дочерние компоненты.
Мы также углубились в шесть шагов, необходимых для обеспечения работы контекста в ваших приложениях. Теперь вы готовы начать кодирование с помощью createContext и useContext, но если вам когда-нибудь понадобится краткое руководство, вот оно:
export const Context = React.createContext();
//Child components
import React, { useContext } from ‘react’;
import Context from “./Parent.js’;
const { example, handleExample } = useContext(Context);
И последнее замечание: если вы хотите углубиться в эту тему, вот официальные ресурсы документации, на которые я также ссылался при изучении useContext и написании этого блога:
Официальная документация:
https://react.dev/reference/react/createContext
Официальная документация Legacy, которая по-прежнему полезна для понимания использования контекста: https://legacy.reactjs.org/docs/context.html
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3