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

227
Vistas
Forma correcta de cambiar el texto de Form.Control con onChange personalizado

Hoy noté que al usar un onChange personalizado en un Form.Control , el texto en el campo ya no cambia cuando se selecciona un archivo. Revisé la documentación en Git AQUÍ pero no dice cómo cambiar el texto con un evento personalizado.

mi código:

 // handles when a file has been selected. const handleUploadChange = (event) => { setFileToUpload(event.target.files[0]); setIsFilePicked(true); } // Footer containing buttons and file selection const CardFooter = () =>{ return( <Card.Footer> <div style={{width:"80%", display : "flex", flexDirection: "row", justifyContent: "center"}}> <div style={{marginRight: "40px"}}> <Form.Group controlId="formFile" className="mb-3"> <Form.Control type="file" custom onChange={handleUploadChange} label={fileToUpload === null ? "No File Selected" : fileToUpload.name}/> </Form.Group> </div> <div className="btn-red" style={{marginRight: "40px"}}> <Button disabled={fileToUpload === null} onClick={()=>{setFileToUpload(null); setIsFilePicked(false);}}>Clear</Button> </div> <div> <Button disabled={(fileToUpload === null) || (fileToUpload.size >= maxUploadSizeInBytes)} onClick={()=>handleSubmit(fileToUpload)}>Upload</Button> </div> </div> </Card.Footer> ) }

Como puede ver aquí, una vez que se selecciona un archivo, ocurre mi evento de cambio, pero el cuadro de selección todavía dice "No se eligió ningún archivo". He intentado label , text , displayName y placeholder así: label={fileToUpload === null ? "No File Selected" : fileToUpload.name}

ingrese la descripción de la imagen aquí

¿Alguien sabe el accesorio adecuado para usar con un onChange personalizado?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No puede controlar la entrada de tipo "archivo" en React. Cuando elige un archivo, el texto/"etiqueta" debe actualizarse automáticamente. No tienes que gestionarlo. Simplemente configure el estado en la selección y lea el estado en el envío. Para arreglar su botón borrar, puede usar useRef:

 const fileInputRef = useRef(null); ... <Form.Control ref={fileInputRef} ...> ... <Button onClick={() => { setFileToUpload(null); fileInputRef.current.value = null; }}> Clear </Button

También considere lo siguiente:

  • No necesita su estado "isFilePicked". Se puede derivar de "fileToUpload" con Boolean(fileToUpload) .
  • No hay ninguna propiedad personalizada Form.Control.
  • No hay una propiedad de etiqueta Form.Control. Si necesita una etiqueta, agréguele Form.Label. Puede ocultar la entrada del archivo y diseñar su propia solución de entrada si lo desea.

Códigosycaja:

https://codesandbox.io/s/hermosa-vaughan-zn68t

Lee mas:

cómo mantener el valor de entrada del archivo en reaccionar

Cómo restablecer la entrada del archivo ReactJS

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