Tengo la función handleSubmit que envía dos solicitudes POST, una para cargar img y otra para otra información. Quiero tomar la respuesta de la solicitud de carga de img y tomar el 'nombre de archivo' y luego almacenarlo en estado para poder enviarlo con la otra solicitud POST.
Aquí están mis opciones de solicitud
const postOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${window.localStorage.serviceToken}` }, body: JSON.stringify({ p_emp_id: empId, p_pr_doc_type: docType, p_from_date: fromDate, p_to_date: toDate, p_doc_number: docNumber, p_addres: address, p_addres_en: addressEN, p_doc_store: docPath, p_creator_id: creator, p_org_id: org }) };Entonces aquí está mi función Manejar Enviar
const handleSubmit = async (e) => { e.preventDefault(); const data = new FormData(); data.append('file', selectedFiles); await fetch(`${config.apiHost}single/`, { method: 'POST', body: data }) .then((res) => res.json()) .then((img) => setDocPath(img.filename)) .catch((err) => { console.log(err.message); }); setEditOpen(false); fetch(`${config.apiHost}api/employees/info/pr_docs/new/`, postOptions); console.log(postOptions.body); }; Mi estado docPath permanece vacío mientras intento enviar, así que después de eso no puedo verlo en mi solicitud.
puede refactorizar su código a esto y veamos si funciona;
let postOptions = { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${window.localStorage.serviceToken}` }, body: { p_emp_id: empId, p_pr_doc_type: docType, p_from_date: fromDate, p_to_date: toDate, p_doc_number: docNumber, p_addres: address, p_addres_en: addressEN, p_creator_id: creator, p_org_id: org } };para el manejo de envío puede ser
const handleSubmit = async (e) => { e.preventDefault(); const data = new FormData(); data.append('file', selectedFiles); await fetch(`${config.apiHost}single/`, { method: 'POST', body: data }) .then((res) => res.json()) .then((img) => { const postOptionsBody = {...postOptions.body, p_doc_store : img.filename } postOptions = {...postOptions, body : JSON.stringify(postOptionsBody) } setDocPath(img.filename) }) .catch((err) => { console.log(err.message); }); setEditOpen(false); fetch(`${config.apiHost}api/employees/info/pr_docs/new/`, postOptions); console.log(postOptions.body); };