Mientras ejecuto el código, intento llamar a la función addValuesForSubmission para agregar la fila en la matriz de filas antes de llamar a la función valueSubmission que envía los valores a la base de datos. Hacer un console.log muestra el valor de las filas y muestra que la fila se está agregando; sin embargo, está llamando a la función valueSubmission para enviar los valores antes de agregar la fila al final. Intenté usar una Promesa pero todavía no funciona.
const valueSubmission = () => { //function to submit values to database var result = errorChecking(); if (result.error === true) { setErrorMessage({ error: false, messages: [] }); setSubmitError(true); setErrorMessage(result); } else { inputRef.current.focus(); agreementpricesServices .updateAgreementPrices({ AgreementPrices: rows }) .then(() => { setResubmit(!resubmit); setSuccess(true); }) .catch((error) => { setSubmitError(true); setErrorMessage({ error: true, messages: [error.response.error.error], }); setResubmit(!resubmit); }); } }; const addValuesForSubmission = () => { //function to add last row to array before submitting values if (!isNaN(from) && !isNaN(price) && from !== "" && price !== "") { const data = { priceID: rows.length !== 0 ? rows[rows.length - 1].priceID + 1 : 1, agreementID: agreementID, from: from, to: to, price: price, }; setRows((rows) => [...rows, data]); setNumberRecords(numberRecords + 1); setFrom(""); setTo(""); setPrice(""); setID(id + 1); } }; const submitValues = async (event) => { //function to submit values or to add new row in table event.preventDefault(); const myPromise = new Promise((resolve) => { setTimeout(() => { resolve(); }, 500); }); myPromise.then(addValuesForSubmission).then(valueSubmission); };