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

103
Views
Sigo perdiendo mis valores almacenados en let, cada vez que llamo a set State

Estoy tratando de mostrar el nombre de una imagen cuando se carga en un formulario. Entonces, creé un estado para eso. Tengo una función que maneja la carga de imágenes y otra función que envía el formulario. Entonces, tengo que declarar formData fuera de la función porque quiero enviar la imagen y el formulario al mismo tiempo. El problema es que llamar a setState() se vuelve a renderizar y hace que la imagen cargada se cargue nuevamente. Ya encontré una solución almacenando la imagen en un estado, por lo tanto, no pierde los datos después de volver a renderizar. Quiero saber si hay alguna forma mejor de hacer esto.

 const [ImageUploaded, setImageUploaded] = useState('') const [response, setResponse] = useState(null) const [error, setError] = useState(null) const [loading, setLoading] = useState(false) let fd = new FormData() const onImageUpload = async (e) => { let file = e.target.files[0] fd.append('file', file) setImageUploaded(file.name)// this causes a re-render and fd re-initializes and data saved is lost } const uploadProduct = async(e) => { e.preventDefault() setLoading(true) try { const productData = { productName: inputState.productName.value, description: inputState.description.value, price: inputState.price.value, quantity: inputState.quantity.value } const {data} = await axios.post('/api/products/new', productData) const response = await axios.post(`/api/upload/${data.id}`, fd, { headers: { 'Content-Type': `multipart/form-data` }, onUploadProgress: (uploadState) => console.log(uploadState.loaded) }) setLoading(false) if (response.status===200) { setResponse(true) } } catch (error) { setLoading(false) setError(true) } }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Puede usar let ImageUploaded excepto usar esto en el caso useState. Porque cuando usa useState para sus variables, su parte actual se renderiza y sus datos anteriores pueden perderse.

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!