React.js: логика обработки модального окна

254
31 октября 2018, 16:30

Не могу понять, каким образом стоит отлавливать действия пользователя в модальном окне.

У меня есть родительский компонент, есть компонент модального окна и логическая функция. Логическая функция вызывает диалоговое модальное окно.

Задача (миссия невыполнима!) приостановить дальнейшее выполнение функции до получения фидбека от пользователя (как приостановить выполнение? как получить фидбек и передать прямо в функцию? как понять, что он получен?), затем продолжить функцию.

Условно говоря:

openIfWrong(array){ 
array.forEach((item, i)=> {
if(item==2) 
   this.modal.open();
 <....> 
);}

И после того, как окно было открыто, мне нужно дождаться фидбека от пользователя, и только после получения оного функция должна продолжиться.

На данный момент функция, из которой вызывается окно, продолжает работать.

Будучи новичком в реакте, не могу придумать, как это сделать, и не могу корректно сформулировать свой запрос гуглу.

Буду благодарна за любую помощь.

Answer 1

Например в функции вызова окна предусмотреть указание callback-функции в качестве параметра. В окне при определенном действии вызвать callback-функцию в которой передать данные действий в окне. Схематичный пример:

open() {
    this.modal.open(this.onConfirm, this.onCancel);
}
onConfirm = (data) => {
    this.modal.close();
    this.someAction();
}
onCancel = () => {
    this.modal.close();
    this.anotherAction();
}

многое зависит от способов реализации модального окна и приложения, его вызывающего

READ ALSO
Выход из рекурсии

Выход из рекурсии

Не могу выйти из рекурсии

180
Посчитать значение всех input type=&ldquo;time&rdquo;

Посчитать значение всех input type=“time”

помогите посчитать значения всех inputПробовал преобразовать значение инпут с помощью parseInt, считает некорректно

157
Как использовать setInterval для скрытия/показа div?

Как использовать setInterval для скрытия/показа div?

как сделать через setInterval так что-бы одинdiv исчезал (например через 5 секунд) и по исчезновению первого

150
Предотвратить click()

Предотвратить click()

На сайте есть квест, в рандомное время появляется попап, и кто первый кликнет получает приз Но некоторые люди использую через консоль поиск...

122