#Botón de submit del formulario

1 messages · Page 1 of 1 (latest)

wild bronze
#

petición axios

export const createuuid = async (data) => {
  try {
    const res = await axios.post(`${urlfiles}uuid`, data);
    console.log('res post createuuid', res);
    return Promise.resolve(res.data);
  } catch (error) {
    console.log('error post createuuid', error.response);
    console.log('error post createuuid', error.response.data);
    return Promise.reject(error.response.data);
  }
};
#

Esto es lo que tengo para dar de alta u nuevo UUID, si la respuesta de petición es ok ahora debo de realizar un update de un registro para eso ejecutaría la siguiente dispatch.

Reducer (toda vía estoy construyendolo)

export const updateInvoice = createAsyncThunk(
  'accounts/create',
  async (data, thunkAPI) => {
    try {
      const res = await update(data);
      return Promise.resolve(res);
    } catch (error) {
      return thunkAPI.rejectWithValue(error);
    }
  }
);
extraReducers: (builder) => {
builder.addCase(updateInvoice.fulfilled, (state, { payload }) => {
      console.log('user-created payload', { payload });
      if (state.currentData.billingInvoice) {
        console.log('entra en el if del stado billingAccount');
        state.currentData.billingInvoice.push(payload);
      }
      state.isSaved = true;
      state.isLoading = false;
      state.isSuccess = true;
    });
    builder.addCase(updateInvoice.rejected, (state, { payload }) => {
      console.log('user-rejected', { payload });
      state.isLoading = false;
      state.isError = true;
      state.isSaved = false;
      state.errorData = payload;
    });

petición

export const uploadInvoice = async (data) => {
  console.log('data', data);
  try {
    const res = await axios.post(`${urlfiles}invoicesupdate`, data);
    console.log('res post uploadInvoice', res);
    return Promise.resolve(res.data);
  } catch (error) {
    console.log('error post uploadInvoice', error.response.data);
    return Promise.reject(error.response.data);
  }
};
#

Aquí es donde entra mi duda, ya que no se si pueda ejecutar en el handleSendUUID el **dispatch(createuuidData(newRelatedUUID)) **y posteriormente el dispatch(updateInvoice(dataUpdate)), ya que son peticiones asíncronas y requiero que la segunda se ejecute cuando la primera sea ok.
Estaba pensando en poner un condicional a la segunda utilizando el estado que creo en el reducer de UUID, pero no se si esto sea correcto.

#

¿Que opciones tendria para realizar esto?

river stream
#

en el createuuidData, thunkAPI entre otras cosas tiene una propiedad dispatch, por lo que puedes en el mismo action llamar al update luedo de recibir la info por ajax

#
export const createuuidData = createAsyncThunk(
  'billingUUID/create',
  async (data, thunkAPI) => {
    try {
      const res = await createuuid(data);

      // LLamas a la otra acción
      thunkAPI.dispatch(updateInvoice(dataUpdate))

      return Promise.resolve(res);
    } catch (error) {
      return thunkAPI.rejectWithValue(error);
    }
  }
);