Оригінальна публікація: How to Pass Data and Events Between Components in React
Якщо ви спробуєте реалізувати операції CRUD (тобто чотири базові функції: створення, читання, оновлення та видалення) за допомогою кінцевих точок API, то ви можете виявити, що керувати даними в кількох компонентах дещо важко.
Або, можливо, у вас є модальний компонент, але ви хочете запустити його з іншого компоненту.
Розібратися, як впоратися з цими сценаріями, може бути важко.
У цій публікації я покажу, як ви можете це зробити.
Як передати дані між батьківським та дочірнім компонентом
Спершу давайте передамо дані між батьківським і дочірнім компонентами.
Спочатку вам потрібно буде створити два компоненти, один батьківський і один дочірній.
Далі ви імпортуєте дочірній компонент у батьківський і повертаєте його.
Потім ви створюєте функцію та кнопку для запуску цієї функції. Крім того, ви створюєте стан за допомогою хука useState, щоб керувати даними.
import React from 'react'
import Child from './Child';
import { Button } from 'semantic-ui-react';
import { useState } from 'react';
import './App.css';
export default function Parent() {
const [data, setData] = useState('');
const parentToChild = () => {
setData("This is data from Parent Component to the Child Component.");
}
return (
<div className="App">
<Child/>
<div>
<Button primary onClick={() => parentToChild()}>Click Parent</Button>
</div>
</div>
)
}
Як ви можете бачити тут, ми викликаємо функцію parentToChild після натискання кнопки Click Parent. Коли натиснуто кнопку Click Parent, у змінній data буде збережено «This is data from Parent Component to the Child Component».
Тепер давайте передамо цей стан даних нашим дочірнім компонентам. Ви можете зробити це за допомогою пропсів.
Передайте дані як пропси, коли викликаєте дочірній компонент, таким чином:
Тут ми передаємо дані дочірнього компонента як data.
data
— це дані, які ми повинні передати, а parentToChild
— це назва пропсу.
Далі настав час записати дані в дочірній компонент. А це дуже просто.
Тут може бути два випадки.
Випадок 1: якщо ви використовуєте функціональний компонент, просто перехопіть parentToChild у параметрах.
Випадок 2: якщо у вас компонент класу, просто використайте this.props.parentToChild
.
У будь-якому випадку ви отримаєте однакові результати:
Коли ми натискаємо на кнопку Click Parent
, ми побачимо виведені дані на екрані.
import React from 'react'
import Child from './Child';
import { Button } from 'semantic-ui-react';
import { useState } from 'react';
import './App.css';
export default function Parent() {
const [data, setData] = useState('');
const parentToChild = () => {
setData("This is data from Parent Component to the Child Component.");
}
return (
<div className="App">
<Child parentToChild={data}/>
<div className="child">
<Button primary onClick={() => parentToChild()}>Click Parent</Button>
</div>
</div>
)
}
Вище ви бачите повний код для Parent Component
.
Як передати дані між дочірнім та батьківським компонентом
Це дещо складніше.
Спершу вам потрібно створити функцію в батьківському компоненті під назвою childToParent
і порожній стан під назвою data
.
Потім передайте функцію childToParent
як пропс до дочірнього компонента.
Тепер у дочірньому компоненті прийміть виклик цієї функції як пропс та призначте його до події onClick.
Крім того, оголосіть стан, який містить деякі дані у вигляді рядка або числа.
Потім передайте дані до функції parentToChild
як параметри.
Далі в батьківському компоненті прийміть ці дані у функції childToParent
як параметр та налаштуйте дані за допомогою хука useState.
Потім покажіть цю змінну data у функції повернення.
Дочірня змінна data перезапише батьківську, коли кнопку Click Child
буде натиснуто.
Тепер ви можете передавати дані від дочірнього компоненту до батьківського і від батьківського до дочірнього як професіонал.
Ви також можете передавати такі події, як onClick або OnChange
Просто викличте метод alert у функції childToParent
і передайте цю функцію як пропс дочірньому компоненту.
А в дочірньому компоненті прийміть функцію childToParent
як пропс. Потім призначте його до події onClick у кнопці.
Ваша функція в батьківському компоненті буде викликана, коли ви натиснете кнопку в дочірньому компоненті, і ви побачите таке сповіщення:
Це все!
Ви можете знайти код на Github, якщо бажаєте експериментувати далі.
Ну ось і все, народе. Щасливого навчання.