Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

531
Visualizações
React hook form: ¿Cómo puedo usar onChange en React Hook Form versión 7.0?

Anteriormente solía escribir así:

 <input className="form-control" name="productImage" type='file' onChange={handleImageUpload} ref={register({ required: true })} />

Después de la actualización tengo que escribir así:

 <input className="form-control" type="file" {...register('productImage', { required: true })} />

¿Cómo uso onChange={handleImageUpload} en la versión actualizada de React Hook Form? Aquí están los documentos de migración.

Disculpe mis errores en la forma de hacer la pregunta. Soy nuevo en estas cosas. Gracias.

over 4 years ago · Santiago Trujillo
6 Respostas
Responde à pergunta

0

Solo tienes que mover los accesorios onChange después de {...register(...)}

 const productImageField = register("productImage", { required: true }); return ( <input className="form-control" type="file" {...productImageField} onChange={(e) => { productImageField.onChange(e); handleImageUpload(e); }} /> )

(3 de diciembre de 2021) editar: este enfoque ya no es correcto desde los cambios de react-hook-form v7.16.0 , consulte la respuesta de @Bill.

over 4 years ago · Santiago Trujillo Relatório

0

Enfrenté un problema similar recientemente al migrar a V7. Si puede ayudar a alguien.

Un componente principal que manejaba el formulario pasaba a un envoltorio la función de registro, el envoltorio la pasaba de nuevo a una entrada que necesitaba eliminar los cambios.

Llamé al formLibraryRef de registroLibraryRef en caso de que quisiera usar una biblioteca diferente más tarde, pero en general tenía que hacer algo como:

const { onChange, ...rest } = formLibraryRef(inputName);

pase onChange a la función que se pasa al evento onChange nativo de la entrada:

 const handleDebouncedChange: (event: React.ChangeEvent<HTMLInputElement>) => void = ( event: ChangeEvent<HTMLInputElement>, ) => { onChange(event); if (preCallback) { preCallback(); } debounceInput(event); };

y luego pasar el resto a la entrada:

 <input aria-label={inputName} name={inputName} data-testid={dataTestId} className={`form-control ...${classNames}`} id={inputId} onChange={handleDebouncedChange} onFocus={onFocus} placeholder={I18n.t(placeholder)} {...rest} />

La sección de register en los documentos aquí: https://react-hook-form.com/migrate-v6-to-v7/ brinda un poco más de información sobre cómo obtener onChange y muestra un ejemplo de Missing ref .

over 4 years ago · Santiago Trujillo Relatório

0

Para mí, la solución de decoración funcionó.

 const fieldRegister = register("productImage", {required: true}) const origOnChange = fieldRegister.onChange fieldRegister.onChange = (e) => { const res = origOnChange(e) const value = e.target.value // do something with value return res }

Para uso de declaración de campo

 <input {...fieldRegister}/>
over 4 years ago · Santiago Trujillo Relatório

0

En la documentación de register https://react-hook-form.com/api/useform/register , existe una muestra en Custom onChange, onBlur :

 // onChange got overwrite by register method <input onChange={handleChange} {...register('test')} /> // register's onChange got overwrite by register method <input {...register('test')} onChange={handleChange}/> const firstName = register('firstName', { required: true }) <input onChange={(e) => { firstName.onChange(e); // method from hook form register handleChange(e); // your method }} onBlur={firstName.onBlur} ref={firstName.ref} />

Entonces para tu caso:

 const productImageRegister = register("productImage", {required: true}) <input className="form-control" type="file" {...productImageRegister } onChange={e => { productImageRegister.onChange(e); handleImageUpload(e); }} />
over 4 years ago · Santiago Trujillo Relatório

0

https://github.com/react-hook-form/react-hook-form/releases/tag/v7.16.0

V7.16.0 ha introducido esta nueva API para onChange personalizado.

 <input type="text" {...register('test', { onChange: (e) => {}, onBlur: (e) => {}, })} />
over 4 years ago · Santiago Trujillo Relatório

0

Estaba atrapado con el mismo problema. Para mí, el problema era que mi onChange estaba por encima del {... registro} del formulario de gancho de reacción y moverlo debajo del registro resolvió el problema para mí.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda