Reduxドキュメントは、AJAXリクエストごとに3つの異なるアクションを持つことを推奨しています。ログインのために例えば、彼らは次のようになります。Reduxのアクションクリエイターでのハンドルのフェッチ方法
LOGIN_REUQEST
LOGIN_FAILURE
LOGIN_SUCCESS
しかし、私はfetch
によってスローされる可能性がすべてのエラーをキャッチして問題を抱えています。 Reduxのドキュメントで 私はこの例が見つかりました:
return fetch(`https://www.reddit.com/r/${subreddit}.json`)
.then(
response => response.json(),
// Do not use catch, because that will also catch
// any errors in the dispatch and resulting render,
// causing an loop of 'Unexpected batch number' errors.
// https://github.com/facebook/react/issues/6895
error => console.log('An error occured.', error)
)
.then(json =>
// We can dispatch many times!
// Here, we update the app state with the results of the API call.
dispatch(receivePosts(subreddit, json))
)
}
をしかし、私はそれにいくつかの問題を参照してください:それはキャッチを使用していない
- 、それは文句を言わないAJAXの問題をキャッチしてユーザー側のリクエスト(例:インターネットなし)
- ステータスが!= 200のレスポンスは処理されません。
私はこのコードこれを終わったが、(問題リアクトのために - 上記のコード内のコメントを参照)をまだそれはケース#1を処理しません。
fetch('/api/auth/signin', {...}),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json, text/plain, */*',
}
})
.then (response =>
response.json().then(json => {
if (response.ok) {
dispatch(loginSuccess(json))
} else {
dispatch(loginFailure(json.errMsg))
}
})
)
あなたは私のすべての可能なハンドルの任意の例をお願いできますフェッチを使用してAJAXリクエストでエラーが発生しました。多くのチュートリアルやオープンソースプロジェクトは、それを無視しています。