Estoy cargando 4 imágenes en respuesta. Obtengo 4 URL una por una, guardo 4 URL en 4 objetos diferentes.
const [multiStatement, setMultiStatement] = useState([]) const multipStatement = async(e) => { const files = e.target.files for (let i = 0; i < files.length; i++) { const url = await uploadStaement(files[i]) console.log(url) setMultiStatement([...multiStatement, {type:"document", frontBack:"front", url:url}]) } } <input type="file" id="file" multiple name="file" onChange={multipStatement} />Cada vez que pasa por el ciclo, está sobrescribiendo el trabajo que hizo antes. Si multiStatement era una matriz vacía cuando esto comenzó, primero establece el estado en matriz vacía + objeto con url 0, luego matriz vacía + objeto con url 1, y así sucesivamente. Al final, el único que se pega es matriz vacía + objeto con la última url.
Para solucionar esto, use la versión de función de setMultiStatement, para que siempre esté trabajando con el estado más reciente:
setMultiStatement(prev => [...prev, {type:"document", frontBack:"front", url:url}]);