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

Помислете за модал, където:

  • Потребителите трябва да потвърдят чрез подкана, ако се опитат да затворят модала.
  • Бутонът за затваряне не се намира в компонента, където контролираме затварянето или запазването на модала отворен, а вместо това в компонента за съдържание.
  • Компонентът съдържание изобразява съдържанието на модала и показва бутона за затваряне.
  • Съдържателният компонент трябва да предприеме действие, ако потребителят потвърди затварянето на модала.

Тук извличането на функция за разрешаване от обещание е техниката за решаване на проблема по чист начин.

Разбирам, че почти никой не оценява тази техника, освен ако самите те не се изправят пред предизвикателството, което е доста рядко. Сблъсквал съм се с него само два пъти веднъж, докато работех върху видео плейър и веднъж нещо близко до това, което виждате като примера, който обясних тук.

Приятно кодиране!