Как сделать асинхоронным dispatch?

Есть сага
function* updateProductSaga({ payload }: any): any {
  try {
    const formData = new FormData();

    Object.entries(payload).forEach(([key, value]: any) => {
      formData.append(key, value);
    });

    const response: AxiosResponse<IProduct> = yield ApiService.put(
      `/admin/product/${payload?.id}`,
      {
        data: formData,
        headers: {
          "Content-Type": "multipart/form-data",
        },
      },
    );

    yield put(actions.updateProductSuccess(response.data));
  } catch (error: any) {
    yield put(
      actions.updateProductError(
        error?.response?.data?.message || error.message,
      ),
    );
  }
}


Есть код функции которая вызывается при клике
const submitHandler = async (data: FormData) => {
    if (product?.id) {
      await dispatch(actions.updateProduct(data, onClose));
    } else {
      await dispatch(actions.createProduct(data));
    }
    onClose();
  };


Мне нужно чтобы onClose вызвался после того как в sage выполнится updateProductSuccess или updateProductError

Или в данном случае подойдет только createAsyncThunk?
  • Вопрос задан
  • 29 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы