簡體   English   中英

redux saga刪除功能

[英]redux saga deleting functionality

我正在使用React / Redux應用程序,我必須刪除用戶地址,我正在使用redux saga作為中間件,功能正常,但問題是刪除地址后請求未輸入deleteAddressByBuyerIdAddressIdSuccess(在saga.js文件中) ) ,它僅輸入deleteAddressByBuyerIdAddressIddeleteAddressByBuyerIdAddressIdFailure (已在Redux開發者工具中檢查過),任何人都可以幫助我解決此問題,

我的redux開發人員工具的所有功能和屏幕截圖如下

動作文件

/* Delete an address for a buyer */
const deleteAddressByBuyerIdAddressId =
    (buyerId: string, addressId: string, address: Object, params: string) => ({
        type: Types.DELETE_ADDRESS_BY_BUYER_ID_ADDRESS_ID,
        buyerId,
        addressId,
        address,
        params,
    });

const deleteAddressByBuyerIdAddressIdSuccess =
    (buyerId: string, addressId: string, address: Object, params: string) => ({
        type: Types.DELETE_ADDRESS_BY_BUYER_ID_ADDRESS_ID_SUCCESS,
        buyerId,
        addressId,
        address,
        params,
    });

const deleteAddressByBuyerIdAddressIdFailure =
    (errorMessage: Object) => ({
        type: Types.DELETE_ADDRESS_BY_BUYER_ID_ADDRESS_ID_FAILURE,
        errorMessage,
    });

佐賀文件

/* Delete Buyers address */
function* deleteAddressByBuyerIdAddressId(action) {
    try {
        const response = yield call(
          api.account.deleteAddressByBuyerIdAddressId,
          action.buyerId,
          action.addressId,
          action.address,
          action.params
        );
        if (response.ok && response.data  && {}.hasOwnProperty.call(response.data, 'data')) {
            yield put(
          Actions.deleteAddressByBuyerIdAddressIdSuccess(
              action.buyerId,
              action.addressId,
              response.data,
              action.address,
              action.params
          )
      );
        } else {
            yield put(Actions.deleteAddressByBuyerIdAddressIdFailure(response.errorMessage));
        }
    } catch (error) {
        yield put(Actions.deleteAddressByBuyerIdAddressIdFailure(error));
    }
}
function* watchDeleteAddressByBuyerIdAddressId(): Generator<void, void, void> {
    yield takeLatest(Types.DELETE_ADDRESS_BY_BUYER_ID_ADDRESS_ID, deleteAddressByBuyerIdAddressId);
}

減速

export const deleteAddressByBuyerIdAddressId = (state: Object = INITIAL_STATE) => ({
    ...state,
    isLoading: true,
    successMessage: null,
    errorMessage: null,
});

export const deleteAddressByBuyerIdAddressIdSuccess = (state: Object = INITIAL_STATE, action: Object) => {
     const successMessage = I18n.getText('account.address-deleted', {}, 'Address deleted!');
     return {
        ...state,
        address: action.address,
        successMessage: successMessage,
      }
};

export const deleteAddressByBuyerIdAddressIdFailure = (state: Object = INITIAL_STATE, action: Object) => ({
    ...state,
    errorMessage: action.errorMessage,
    isLoading: false,
});

redux開發人員工具視圖

在此處輸入圖片說明


如果不需要, if, else不需要。 相反,如果請求成功,則僅在try塊本身內調用成功動作。 否則,在catch塊內調用失敗操作。 那將為您完成工作。 這是示例代碼。

/* Delete Buyers address */
function* deleteAddressByBuyerIdAddressId(action) {
    try {
        const response = yield call(
          api.account.deleteAddressByBuyerIdAddressId,
          action.buyerId,
          action.addressId,
          action.address,
          action.params
        );
            yield put(
          Actions.deleteAddressByBuyerIdAddressIdSuccess(
              action.buyerId,
              action.addressId,
              response.data,
              action.address,
              action.params
          )
      );
    } catch (error) {
        yield put(Actions.deleteAddressByBuyerIdAddressIdFailure(error));
    }
}
function* watchDeleteAddressByBuyerIdAddressId(): Generator<void, void, void> {
    yield takeLatest(Types.DELETE_ADDRESS_BY_BUYER_ID_ADDRESS_ID, deleteAddressByBuyerIdAddressId);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM