0

投稿のリストを表示する Redux アプリケーションがあります。状態は多かれ少なかれ次のとおりです。

{
  posts: [
    {id: 1, title: 'My Post'},
    {id: 2, title: 'Also this one'},
    {id: 3, title: 'Other Post'}
  ],
  visible_post_ids: [1, 2]
}

に追加するいくつかの投稿をロードするたびにposts、 のコンテンツを置き換えvisible_post_idsます。

これは、投稿をロードするための私のアクション作成者です:

function loadPosts (filters) {
  return function (dispatch, getState) {
    return fetch(`/posts.json?filters=${filters}`)
      .then((response) => response.json())
      .then((posts) => {
        dispatch(postsLoaded(posts)) // Will update `posts`
        const postIds = posts.map((post) => post.id)
        dispatch(updateVisiblePosts(postIds)) // Will update `visible_post_ids`
      })
  }
}

私の質問は次のとおりです。サンクから 2 つ (またはそれ以上) のイベントをディスパッチするのは慣用ですか? それとも、1つだけディスパッチして、さまざまなリデューサーで処理する必要がありますか?

4

2 に答える 2

1

updateVisiblePosts を呼び出さずに postsLoaded を実行できるシナリオを考慮しない場合は、postsLoaded だけで状態の変更を処理することをお勧めします。特に、それらを同期させる必要がある場合。たとえば、visible_post_ids に存在しない/読み込まれていない投稿の Id が含まれていない被付与者が必要な場合。また、ディスパッチごとに React で処理が行われるため、更新が最小限に抑えられます。

一方、これらのアクションを別々にすると、各アクションの実装が非常に単純になるため、コードがより明確になります。

于 2016-04-04T09:57:51.707 に答える