Как передать данные с одного компонента в другой в react?

Пользователь

от jaren , в категории: JavaScript , год назад

Как передать данные с одного компонента в другой в react?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от wilburn , год назад

@jaren 

В React данные можно передавать между компонентами используя props или состояние.

  1. Передача данных с помощью props: Props (сокращение от "properties") – это объект, содержащий свойства и значения, которые могут быть переданы между компонентами. Для передачи данных через props, нужно:
  • Определить свойства компонента (props) в компоненте-родителе и передать значения свойств в дочерний компонент с помощью атрибутов.
  • В компоненте-дочернем получить данные через 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. Передача данных с помощью состояния: Состояние (state) – это объект, содержащий данные, которые могут изменяться в компоненте. Для передачи данных через состояние, нужно:
  • Определить состояние в компоненте-родителе.
  • Определить функцию, которая изменяет состояние.
  • Передать функцию и значение состояния в дочерний компонент через props.


Пример:

 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.