Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

197
Vistas
¿Cómo resolver un problema con una función de orden superior?

Parece que no entiendo completamente cómo funciona el "cierre". Tengo una entrada al cambiar la cual necesito llamar a funciones y pasarle 2 argumentos. Pero también necesito el evento de este evento.

Mi versión a continuación no funciona. Solo funcionará la primera parte de la función, y la segunda (donde devuelvo la segunda función) no funciona. Lamentablemente, no puedo entender cuál es mi error y cómo hacer el "cierre" hasta el final.

Y la segunda, mini pregunta: ¿cómo escribir exactamente evento aquí si estoy trabajando en reaccionar?

 const handleChangeClosure = (userId: string, role: string) => (event: ???) => { const { checked } = event.target; dispatch(addOrDeleteRoleAction(userId, role, checked, dispatch)); }; <input type="checkbox" onChange={() => handleChangeClosure(user.userId, "Controller")}/>
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Reemplazar

 <input type="checkbox" onChange={() => handleChangeClosure(user.userId, "Controller")}/>

Con

 <input type="checkbox" onChange={handleChangeClosure(user.userId, "Controller")}/>

La función handleChangeClosure devuelve una función y el evento onChange espera una función. Entonces no necesita ()=> que simplemente lo envolvería en otra función.

Alternativamente, esto también funcionaría:

 <input type="checkbox" onChange={(ev) => handleChangeClosure(user.userId, "Controller")(ev)}/>

Pero eso es solo más código inútil.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Al usar onChange={() => ...} , está perdiendo el argumento del event .

lo que quieres es

 <input type="checkbox" onChange={handleChangeClosure(user.userId, "Controller")}/>

Su función de orden superior devuelve una nueva función de controlador de eventos que se adjuntará al evento de cambio .

FYI, el tipo de event es React.ChangeEvent<HTMLInputElement>

 const handleChangeClosure = (userId: string, role: string) => (event: React.ChangeEvent<HTMLInputElement>) => { const { checked } = event.target; dispatch(addOrDeleteRoleAction(userId, role, checked, dispatch)); };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda