2017-07-14 9 views
0

本当に奇妙な問題です。何らかの理由で私の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呼び出し、:

ミドルウェア機能が responseokプロパティをチェック単純な関数である
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))が放出されていないエン... は、以下を参照してください。

enter image description here

任意のアイデア?ありがとう

+0

「yield put(createLoginFailAction(response))」は正しいですか?ここでは 'response'は' undefined'です。 –

+0

'createLoginFailAction'関数でエラーが発生する可能性がありますが、どうなっていますか? – erikvold

答えて

1

私には、createLoginFailAction機能にエラーがあるように見えます。もしそうなら、あなたは見ている結果を引き起こすでしょう。

+0

実際、オブジェクトを読み取る際にエラーが発生しました。ありがとう... – coolboyjules

関連する問題