En primer lugar, he echado un vistazo a otras respuestas y eso no ayudó.
Tengo un modal que se pasa en un accesorio de función onClose. Cuando se hace clic en el botón cancelar, debe activar la función onClose que básicamente establece el estado showModal en falso. Sin embargo, al hacer clic en el botón aparece un error que indica que onClose no es una función.
He comprobado el tipo de accesorio onClose y está volviendo como un objeto. no sé por qué
Así es como llamo al Modal del padre.
<Modal onClose={() => this.setState((prevState) => ({ showModal: { ...prevState.showModal, confirmation: false, }, }))}/>
y así es como se ve el modal.
const Modal = (onClose) => { return ( <div className="Background" > <div className="Container"> <div className="Title">Title of the modal</div> <div className="Body">Body of the modal</div> <div className="Footer"> <button type="button" onClick={() => onClose()}>Cancel</button> </div> </div> </div> ); };Este es el error de la consola.
cambiar esta linea
const Modal = (onClose) => {a
const Modal = ({onClose}) => { //be sure this is being used in a class component! (not a functional) export YourClassComponent extends React.ClassComponent { constructor(props) { super(props); this.onCloseModal = this.onCloseModal.bind(this); } onCloseModal = () => { this.setState((prevState) => ({ showModal: { ...prevState.showModal, confirmation: false, }})) }; render() { <Modal onClose={this.onCloseModal} /> }; }; // In you Modal.jsx, see the prop is setted directly no need to create a new ref to call it const Modal = ({ onClose }) => { return ( <div className="Background" > <div className="Container"> <div className="Title">Title of the modal</div> <div className="Body">Body of the modal</div> <div className="Footer"> <button type="button" onClick={onClose}>Cancel</button> </div> </div> </div> ); };