Реагирует дочерний компонент, не выполняющий функциональную функцию родительского компонента

#reactjs #react-hooks #react-props

Вопрос:

У меня есть этот дочерний элемент нижнего колонтитула, которому в реквизитах передана функция отмены модального родителя, но он не будет выполнять функцию «handleCancel» родителя.

 const PageFooter = (props) =gt; { const { handleCancel} = props;  const modalStyleClass = useModalStyles(); return(  lt;footer className={modalStyleClass.modalFooter}gt;  lt;div className="container-fluid"gt;  lt;div className="row"gt;  lt;div className="col-sm-6"gt;  lt;/divgt;  lt;div className="col-sm-6 text-right"gt;  lt;button className={modalStyleClass.cancelButton}  onClick={handleCancel}gt;  lt;/buttongt;  lt;/divgt;  lt;/divgt;  lt;/divgt;  lt;/footergt; )}  export default PageFooter;  

Общий модальный родительский элемент редактирования получает свои реквизиты от любого другого родительского компонента, который его назвал: этот родитель реализует состояние модального с помощью

 const [isModalShown, toggleModal] = React.useState(false);  

Общий «EditModal» в качестве родителя кода дочернего компонента нижнего колонтитула:

 export function GenericEditModal (props) {  const {isModalShown, title, closeModal, } = props;   const HandleCancel = () =gt; {  closeModal();  };   return (  lt;form gt;  lt;divgt;  lt;Modal  className={modalStyleClass.modal}  open={isModalShown}  closeModal={handleCloseModal}  onClose={handleCloseModal}  gt;  lt;div className={modalStyleClass.paper} style={{ top: '0px',padding:'0px', }} gt;  lt;ModalHeadergt;  handleCancel={HandleCancel}  lt;/ModalHeadergt;  { markup }  lt;/divgt;  lt;Footergt;  handleCancel={HandleCancel}  lt;/Footergt;  lt;/divgt;  lt;/Modalgt;  lt;/divgt;  lt;/formgt;  ); };  export const GenericEditModal = React.memo(GenericEditModal);  

Комментарии:

1. Можете ли вы зарегистрировать реквизит, чтобы убедиться, что реквизит проходит должным образом. Это позволяет нам определить, является ли это ошибкой вызова или ошибкой отсутствующей функции.

Ответ №1:

Передайте ребенку вот так:

 lt;Footer handleCancel={HandleCancel}/gt;