2016-08-22 6 views
0

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)) 
    } 
    } 
} 
+2

アプリが最初に起動したときやアプリがバックグラウンドから切り替えられたときに使用されます。最初にデータをプルする必要があります。次に、データをメモリに保存しています –

答えて

1

グッドキャッチ。そして、はい、あなたは正しいです! shouldFetchPostsはアクションではありません。ヘルパー機能です。最初にアクションクリエイターと一緒に配置すべきではありません。 reduxの例は改善の余地が大きいと思うかもしれません。しかし、明るいところでは、それは物事を学ぶ素晴らしい方法です。あなたは自分のコードに間違いを見つけました。サンプルプロジェクトで修正してください。

関連する問題