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

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

от caterina , в категории: JavaScript , 7 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

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

@caterina 

Для передачи данных из React компонента в модальное окно, можно использовать следующий подход:

  1. Создайте состояние в компоненте, которое будет хранить данные, которые нужно передать в модальное окно.
1
2
3
4
5
6
7
import React, { useState } from "react";

function MyComponent() {
  const [modalData, setModalData] = useState(null);

  // ...
}


  1. Добавьте обработчик клика на элемент, который будет вызывать модальное окно и передавать данные в состояние.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function MyComponent() {
  const [modalData, setModalData] = useState(null);

  const handleClick = (data) => {
    setModalData(data);
    // вызов модального окна
  };

  // ...

  return (
    <div>
      {/* Элемент, на который нужно добавить обработчик */}
      <button onClick={() => handleClick({ foo: "bar" })}>Открыть модальное окно</button>
    </div>
  );
}


  1. В модальном окне используйте переданные данные.
1
2
3
4
5
6
7
8
function Modal({ modalData }) {
  return (
    <div>
      {/* Использование переданных данных */}
      <p>Переданные данные: {modalData.foo}</p>
    </div>
  );
}


  1. Добавьте компонент модального окна в компонент, где находится состояние и передайте в него данные из состояния.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
function MyComponent() {
  const [modalData, setModalData] = useState(null);

  const handleClick = (data) => {
    setModalData(data);
    // вызов модального окна
  };

  // ...

  return (
    <div>
      <button onClick={() => handleClick({ foo: "bar" })}>Открыть модальное окно</button>

      {/* Компонент модального окна с переданными данными */}
      {modalData && <Modal modalData={modalData} />}
    </div>
  );
}


Теперь при клике на элемент в компоненте MyComponent, данные будут переданы в состояние, а затем в компонент модального окна.