В React родителските компоненти не трябва да извикват функции, намиращи се в обхвата на своите деца; без значение как децата го връщат обратно на родителя, това е трудна работа и обикновено причинява проблеми със стабилността и поддръжката.
Помислете за модал, където:
- Потребителите трябва да потвърдят чрез подкана, ако се опитат да затворят модала.
- Бутонът за затваряне не се намира в компонента, където контролираме затварянето или запазването на модала отворен, а вместо това в компонента за съдържание.
- Компонентът съдържание изобразява съдържанието на модала и показва бутона за затваряне.
- Съдържателният компонент трябва да предприеме действие, ако потребителят потвърди затварянето на модала.
Тук извличането на функция за разрешаване от обещание е техниката за решаване на проблема по чист начин.
Разбирам, че почти никой не оценява тази техника, освен ако самите те не се изправят пред предизвикателството, което е доста рядко. Сблъсквал съм се с него само два пъти веднъж, докато работех върху видео плейър и веднъж нещо близко до това, което виждате като примера, който обясних тук.
Приятно кодиране!