使用数组重新选择,导致组件始终呈现

时间:2019-08-15 17:18:44

标签: javascript redux reselect

我正在使用重新选择查询我的状态和道具。 当我向组件添加日志语句时,可以看到它一遍又一遍地呈现。

如果我从getFiltered方法返回一个 find (非数组,一个对象),我会发现它不会一遍又一遍地渲染。如果我从getFiltered方法返回一个过滤器,我会发现它确实会反复渲染。

我认为它与某些数组===发生在某处的数组有关。我如何解决它?我尝试根据documentation使用lodash的isEqual。我正在将getFiltered的结果输入我的状态。看起来国家认为它由于某种原因而发生变化

export const getProjects = state => state.availability.projects.list;

export const getProjectId = (state, props) => props.project.id;

// WORKS! - Don't see re-render log statements
export const getFiltered = createSelector([getProjects, getProjectId],
(projects, projectId) => projects.find(project => project));

// Doesn't work - I do see re-render statements in the console
export const getFiltered = createSelector([getProjects, getProjectId],
(projects, projectId) => projects.filter(project => project));

0 个答案:

没有答案