State Management · Senior · Question 13 of 75
What does a memoized selector from createSelector need to be effective with arguments?
const selectByCategory = createSelector(
[(s) => s.products, (s, category) => category],
(products, category) => products.filter((p) => p.category === category),
);- ✓Correct answer: Inputs that return stable references; one selector instance per distinct argument if used in many places
- 2Wrapping every input in
useMemo - 3Returning a new array from each input selector
Explanation
The default cache stores the latest inputs, so alternating arguments in several components ('books', 'toys') recomputes every time. Create a selector per component (useMemo(makeSelector, [])) or configure a larger cache (weakMapMemoize is the default in Reselect 5).