В React родительские компоненты не должны вызывать функции, находящиеся в их дочерних областях; независимо от того, как дети возвращают его обратно родителю, это сложное дело и обычно вызывает проблемы со стабильностью и ремонтопригодностью.

Подумайте о модальном, где:

  • Пользователям необходимо подтвердить с помощью подсказки, если они попытаются закрыть модальное окно.
  • Кнопка закрытия находится не в компоненте, где мы контролируем закрытие или сохранение модального окна открытым, а в компоненте содержимого.
  • Компонент содержимого отображает содержимое модального окна и показывает кнопку закрытия.
  • Компонент содержимого должен выполнить действие, если пользователь подтвердит закрытие модального окна.

Здесь извлечение функции разрешения из обещания — это метод, позволяющий решить проблему чистым способом.

Я понимаю, что почти никто не оценит эту технику, если только они сами не столкнутся с проблемой, которая довольно редка. Я сталкивался с этим только дважды, когда работал над видеоплеером, и один раз с чем-то близким к тому, что вы видите в примере, который я объяснил здесь.

Удачного кодирования!