ReactJs重新选择每次重新计算所有选择器

时间:2016-08-30 10:30:23

标签: reactjs redux reselect

我有一个包含各种类型博客帖子的reducer。我正在使用select来获取我需要的部分数据,但每次状态更改时重新选择都会重新计算所有选择器。

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分支也会发生变化,因为我正在返回一个新副本。因此,我将编写的任何选择器最终会在每次过滤器更改时重新计算所有内容。

创建过滤状态选择器的标准做法是什么?

1 个答案:

答案 0 :(得分:0)

请告诉我您的选择器代码部分。

在上面的代码中,filter已更改,但blogPostscommentPosts未更改,因此不会进行不必要的重新计算。