Как передавать данные между компонентами в react.js?

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

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

Как передавать данные между компонентами в react.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от jett , 2 года назад

@kenya 

В React есть несколько способов передачи данных между компонентами:

  1. 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
// Родительский компонент
import React from 'react';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const name = 'John Doe';
  const age = 30;
  const handleClick = () => alert('Hello from ParentComponent!');

  return <ChildComponent name={name} age={age} handleClick={handleClick} />;
}

// Дочерний компонент
import React from 'react';

function ChildComponent(props) {
  const { name, age, handleClick } = props;

  return (
    <div>
      <p>Name: {name}</p>
      <p>Age: {age}</p>
      <button onClick={handleClick}>Click me!</button>
    </div>
  );
}


  1. Context (контекст) - это глобальное хранилище, которое позволяет передавать данные от компонента к компоненту без явной передачи через 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
29
30
31
32
33
34
// Создаем контекст
import React from 'react';

const MyContext = React.createContext();

// Родительский компонент
import React, { useState } from 'react';
import ChildComponent from './ChildComponent';
import MyContext from './MyContext';

function ParentComponent() {
  const [name, setName] = useState('John Doe');

  return (
    <MyContext.Provider value={{ name, setName }}>
      <ChildComponent />
    </MyContext.Provider>
  );
}

// Дочерний компонент
import React, { useContext } from 'react';
import MyContext from './MyContext';

function ChildComponent() {
  const { name, setName } = useContext(MyContext);

  return (
    <div>
      <p>Name: {name}</p>
      <button onClick={() => setName('Jane Doe')}>Change name</button>
    </div>
  );
}


  1. Redux - это библиотека управления состоянием приложения, которая позволяет передавать данные между компонентами через единое хранилище. Пример использования:
 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
29
30
31
32
33
34
35
36
37
38
// Создаем store
import { createStore } from 'redux';

const initialState = {
  name: 'John Doe',
  age: 30,
};

function reducer(state = initialState, action) {
  switch (action.type) {
    case 'CHANGE_NAME':
      return {
        ...state,
        name: action.payload,
      };
    default:
      return state;
  }
}

const store = createStore(reducer);

// Родительский компонент
import React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import ChildComponent from './ChildComponent';

function ParentComponent() {
  const dispatch = useDispatch();
  const { name, age } = useSelector(state => state);

  const handleClick = () => dispatch({ type: 'CHANGE_NAME', payload: 'Jane Doe' });

  return <ChildComponent name={name} age={age} handleClick={handleClick} />;
}

// Дочерний компонент
import React from '


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

от cayla , 7 месяцев назад

@kenya 

react';


function ChildComponent({name, age, handleClick}) { return ( Name: {name} Age: {age} Click me! ); }


export default ChildComponent;

1
Какой из этих подходов выбрать, зависит от конкретной ситуации и требований вашего проекта. Пропсы подходят для передачи данных между родительскими и дочерними компонентами, контекст может быть полезен для передачи данных к более глубоко вложенным компонентам, а Redux обычно используется для более крупных проектов с большим объемом состояния приложения.