本当に奇妙な問題です。何らかの理由で私のcatch
ブロックの私のput
ブロックが以下で実行されていません。ここに私のサガです:catchブロック内のRedux-saga yield put()が実行されません。
function* postLoginFormSaga(action) {
let response;
try {
// Data from emitting login action
response = yield call(AuthenticationApi.login, action.formData);
yield put(createLoginSucceedAction());
yield put(push('/dashboard/summary'));
} catch (e) {
console.log(e);
yield put(createLoginFailAction(response))
}
}
と非2XX
応答を処理するためのカスタムミドルウェアを持っている私のAPI呼び出し、:
response
の
ok
プロパティをチェック単純な関数である
static login = (formData) => {
return fetch('/api/login', {
method: 'POST',
body: formData,
credentials: 'same-origin'
}).then(handleFetchErrorMiddleWare)
.then(r => r.json())
};
オブジェクト:
export function handleFetchErrorMiddleWare(response) {
if (!response.ok){
throw Error(response.status)
}
return response
}
console.log(e)
の出力を見ることができるので、ミドルウェアが正しく動作しています例外がスローされますが、yield put(createLoginFailAction(response))
が放出されていないエン... は、以下を参照してください。
任意のアイデア?ありがとう
「yield put(createLoginFailAction(response))」は正しいですか?ここでは 'response'は' undefined'です。 –
'createLoginFailAction'関数でエラーが発生する可能性がありますが、どうなっていますか? – erikvold