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

256
Visualizações
El valor es cambiado por setState, pero el formulario React envía el valor ORIGINAL

Tengo un problema con un valor de campo modificado que no se "pega" al formulario al enviarlo.

Estoy creando un formulario donde los usuarios pueden cargar una imagen. Después de cargar la imagen, el servicio de alojamiento devuelve la URL de la imagen, que se guarda en una variable de estado con

 this.setState({ imageUrl: info.secure_url })

En TextField, tengo el valor establecido como

 <TextField name='imageUrl' value={this.state.imageUrl}/>

Esto funciona bien y aparece en el formulario, pero surge un problema cuando se envía el formulario. El formulario no reconoce que hay algo en ese campo y arroja un error que indica que se requiere una entrada.

La función de envío funciona bien con los campos ingresados por el usuario y envía correctamente los datos a la base de datos.

Aquí está el código completo

 class SubmitVaccine extends React.Component { ... state = { imageUrl: null, imageAlt: null, } uploadImage = () => { ... (code to upload image here) ... if (event === 'success') { this.setState({ imageUrl: info.secure_url } }; render() { const { imageUrl } = this.state; return ( <Grid> ... (code to upload image here) ... <TextField name='imageUrl' value={this.state.imageUrl}/> <SubmitField value='Submit' id="btn-custom"/> ... </Grid> ); } }

Aquí hay algunas imágenes. Por defecto, this.state.imageUrl se establece en nulo, por lo que el campo aparece vacío

ingrese la descripción de la imagen aquí

Después de cargar la imagen, la URL de la imagen aparece porque this.state.imageUrl ha cambiado

ingrese la descripción de la imagen aquí

Sin embargo, el campo de texto es obligatorio y se produce un error cuando el campo está vacío al enviarlo. Esto es exactamente lo que está sucediendo aquí, ¡pero el campo está lleno! ¿Dónde debo buscar pistas sobre cómo resolver esto? ingrese la descripción de la imagen aquí

ACTUALIZAR

ACTUALIZAR

ACTUALIZAR

Descubrí los errores del formulario porque envía el estado original, NO actualizado de imageUrl, que se configuró en nulo. nulo = campo vacío = error al enviar.

Sin embargo, podemos ver visualmente que el campo muestra una imageUrl actualizada. ¿Cómo hago que el formulario envíe la nueva imageUrl?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

no tenía una función onChange en su componente TextField, debe hacer una función onChange para actualizar su estado cada vez que escribe en él, así

 handleChangeURL(event) { this.setState({imageURL: event.target.value}); }

y ponlo

 <TextField name='imageUrl' value={this.state.imageUrl} onChange={this.handleChangeURL}/>

Solo asegúrese de que su componente TextField llame a la función onChange correctamente

about 4 years ago · Juan Pablo Isaza 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