私はReact/Reduxアプリケーションで作業していますが、ユーザーアドレスを削除する必要があります。私はredux sagaをミドルウェアとして使用していますが、機能はうまくいきますが、 deleteAddressByBuyerIdAddressIdSuccess(saga.jsファイルで)、それだけでdeleteAddressByBuyerIdAddressIdとdeleteAddressByBuyerIdAddressIdFailureに入っている(Reduxの開発ツールで確認している)、いずれかがこの問題を整理するために私を助けることができる、redux saga deletting 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またはelseブロックに入っています。なぜなら、ユーザアドレスを削除したあとに応答がnullであるからです。これは事前に感謝してくれますか? – wali
'null'応答が返ってきたら'call'関数の問題になります。 –