@jaren
В React данные можно передавать между компонентами используя props или состояние.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
//Родительский компонент import React from 'react'; import ChildComponent from './ChildComponent'; function ParentComponent() { const name = 'John'; return ( <div> <ChildComponent name={name} /> </div> ); } //Дочерний компонент import React from 'react'; function ChildComponent(props) { return <p>Hello, {props.name}</p>; } |
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
//Родительский компонент import React, { useState } from 'react'; import ChildComponent from './ChildComponent'; function ParentComponent() { const [name, setName] = useState('John'); return ( <div> <ChildComponent name={name} setName={setName} /> </div> ); } //Дочерний компонент import React from 'react'; function ChildComponent(props) { function handleChange(e) { props.setName(e.target.value); } return ( <div> <p>Hello, {props.name}</p> <input type="text" value={props.name} onChange={handleChange} /> </div> ); } |
Здесь мы определяем состояние name в компоненте-родителе ParentComponent и передаем его значение и функцию setName в дочерний компонент ChildComponent. В дочернем компоненте мы отображаем значение name и вводим его в поле ввода. При изменении значения в поле ввода вызывается функция handleChange, которая изменяет состояние name с помощью функции setName.
@jaren
Дополнительно к вышеперечисленному, в React также есть возможность использовать контекст (Context API) для передачи данных между компонентами без явной передачи через пропсы через каждый уровень вложенности. Контекст позволяет передавать данные глубоко в иерархии компонентов, обеспечивая доступ к этим данным во всех дочерних компонентах, не задействуя промежуточные компоненты.
Для использования контекста в React, необходимо создать и определить контекст с помощью функции createContext, передав в нее значение по умолчанию. Затем, определите компонент-поставщик (Provider) контекста, который будет оборачивать дочерние компоненты, и укажите значения для контекста. Наконец, используйте компонент-потребитель (Consumer) контекста или хук useContext в дочерних компонентах, чтобы получить доступ к данным контекста.
Пример использования контекста в React:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Создание контекста
const MyContext = React.createContext('default value');
// Родительский компонент-поставщик
function ParentComponent() {
const data = 'information';
return (
<MyContext.Provider value={data}>
<ChildComponent />
</MyContext.Provider>
);
}
// Дочерний компонент-потребитель
function ChildComponent() {
return (
<MyContext.Consumer>
{value => <p>Data from context: {value}</p>}
</MyContext.Consumer>
);
}
|
В данном примере значение data, переданное из родительского компонента через контекст, доступно в дочернем компоненте ChildComponent без необходимости передачи через пропсы.
Контекст предоставляет удобный способ для передачи данных, когда указанные решения с пропсами или состоянием могут быть неудобными из-за глубокой вложенности компонентов или необходимости передавать одни и те же данные в множество компонентов.