0

さまざまなタイプのブログ投稿を保持するレデューサーがあります。select を使用して必要なデータの一部を取得していますが、状態が変わるたびに reselect がすべてのセレクターを再計算します。

initialstate = {
  blogPosts: { byId: { 1: { id: 1, parent: null } }, ids: [1] },
  commentPosts: { byId: { 2: { id: 2, parent: 1 } }, ids: [2] },
  filter:{ selectedBlog: null }
};

const reducer = (state = initialstate, action) => {
  if (action.type == 'filter') {
    return object.assign(state, { filter: action.filter });
  }
  return state;
}

const Blogselector = state => state.posts.blogPosts
const Commentselector = state => state.posts.commentPosts
const getFilters = state => state.posts.filter;

私のコンポーネントでは、ブログ投稿を表示しているときに、設定したアクションをディスパッチしますfilter.selectedBlog = post.id

問題は、フィルターが変更されると、新しいコピーを返すときに状態の Posts ブランチ全体も変更されることです。したがって、私が作成するセレクターは、フィルターが変更されるたびにすべてを再計算することになります。

フィルタリング状態セレクターを作成するための標準的な方法は何ですか?

4

1 に答える 1

0

セレクターのコード部分を見せてください。

上記のコードでfilterは、 が変更されていますがblogPosts、変更されcommentPostsていないため、不要な再計算は予想されません。

于 2017-04-26T04:47:54.407 に答える