React/Redux 응용 프로그램에서 작업 중입니다. 사용자 주소를 삭제해야합니다. redux saga를 미들웨어로 사용하고 있습니다. 기능은 정상적으로 작동하지만 주소를 삭제하면 요청이 입력되지 않습니다. 가 deleteAddressByBuyerIdAddressIdSuccess이 (saga.js 파일), 그것은, 하나는이 문제를 밖으로 정렬하는 데 도움이 수 (REDUX 개발자 도구에서 확인했다)에만 deleteAddressByBuyerIdAddressId 및 deleteAddressByBuyerIdAddressIdFailure에 진입 redux saga deleting functionality
내 모든 기능과 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
부분이 필요하지 않습니다
프로그램이 catch 중이거나 진행 중입니까? –
예, 사용자 프로그램을 삭제 한 후 응답이 null이기 때문에 내 프로그램이 catch 또는 else 블록에 있습니다. 미리 감사드립니다. – wali
응답이 'NULL'이면 'call' 함수에 문제가있을 수 있습니다. –