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

222
Views
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 answers
Answer question

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 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!