I'm using reselect to query my state and props. When I add a log statement to my component, I can see that it is being rendered over and over again.
If I return a find (non-array, one object) from the getFiltered
method I see that it doesn't render over and over again. If I return a filter from the getFiltered
method I see that it does render over and over again.
I assume its to do with some array === array going on somewhere. How do I fix it? I've tried using lodash's isEqual as per the documentation. I'm feeding the result of getFiltered into my state. It looks like the state thinks its changing for some reason
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));