react redux reddit app exampleの#ShouldFetchPostsはアクションの一部であるべきですか?それは実際のアクションよりもヘルパーのほうが奇妙に思えます。実際のアクションは、ストアにディスパッチされるオブジェクトを返すべきです。アクションには、非同期関連のものをミドルウェアに送信する機能が含まれていても、#shouldFetchPostsはこの目的にも、伝統的なアクションにも当てはまらないようです。この機能を整理するより良い方法はありますか?最初に抽象化されていないはずですか?reactxのアクション機能の目的は何ですか?彼らはすべて店舗/ミドルウェアに行く行動や機能を返すべきでしょうか?
function fetchPosts(reddit) {
return dispatch => {
dispatch(requestPosts(reddit))
return fetch(`https://www.reddit.com/r/${reddit}.json`)
.then(response => response.json())
.then(json => dispatch(receivePosts(reddit, json)))
}
}
function shouldFetchPosts(state, reddit) {
const posts = state.postsByReddit[reddit]
if (!posts) {
return true
}
if (posts.isFetching) {
return false
}
return posts.didInvalidate
}
export function fetchPostsIfNeeded(reddit) {
return (dispatch, getState) => {
if (shouldFetchPosts(getState(), reddit)) {
return dispatch(fetchPosts(reddit))
}
}
}
アプリが最初に起動したときやアプリがバックグラウンドから切り替えられたときに使用されます。最初にデータをプルする必要があります。次に、データをメモリに保存しています –