Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

152
Views
¿Hay alguna forma de usar un objeto de evento dentro del método componentDidMount de React?

Tengo dos componentes, el componente de la aplicación y un componente SearchBar. El componente SearchBar es un componente funcional y el envío del formulario se maneja mediante un método llamado handleSubmit que se define en el componente de la aplicación y se transmite a través de accesorios. El método handleSubmit que se define en el componente de la aplicación que primero evita el comportamiento predeterminado del envío de formularios del navegador y luego realiza una llamada asíncrona a una API de YouTube. La llamada API siempre tiene éxito y funciona cada vez que busco algo a través del formulario, digamos "edificios". Pero quiero mostrar un video predeterminado cuando el componente se renderiza por primera vez, por ejemplo, "juegos". Así que llamé al método handleSubmit en componentDidMount, que da un error "Rechazo no controlado (Error de tipo): no se pueden leer las propiedades de undefined (leyendo 'preventDefault')". ¿Hay alguna forma de que pueda usar un objeto de evento dentro de componentDidMount?

Aquí está mi código:

aplicación:

 class App extends React.Component { constructor(props) { super(props); this.state = { inputValue: "", videos: [], selectedVideo: null, }; } componentDidMount() { this.handleSubmit("games"); } // handle form submission handleSubmit = async (query, e) => { e.preventDefault(); // API call }; // handle change in input onIputChange = (e) => { const inputValue = e.target.value; this.setState({ inputValue }); }; render() { const inputValue = this.state.inputValue; return ( <div> <SearhBar handleSubmit={(e) => this.handleSubmit(inputValue, e)} inputValue={inputValue} onInputChange={this.onIputChange} /> </div> ); }

Barra de búsqueda:

 function SearhBar(props) { return ( <form onSubmit={props.handleSubmit}> <label>Search Video</label> <input onChange={props.onInputChange} type="text" value={props.inputValue} /> </form> ); }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No, no puedes porque simplemente no tienes un evento allí... Puedes hacer dos cosas:

  • rodee e.preventDefault con un if (e) e.preventDefault()
  • extraiga la parte común callApi a un método y llame a ese método desde componentDidMount :
 // handle form submission handleSubmit = async (query, e) => { e.preventDefault(); this.callApi(query) }; componentDidMount() { this.callApi("games"); } callApi(query) { // code to call api }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!