Performance: Selectors for derived state
MEDIUM IMPACT
This affects how quickly the UI updates when state changes and how much CPU is used during rendering.
const selectActiveCount = createSelector( (state) => state.items, (items) => items.filter(item => item.active).length ); const derivedValue = store.select(selectActiveCount);
const derivedValue = store.select(state => { return state.items.filter(item => item.active).length; });
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Non-memoized selector | Many recalculations | Multiple reflows due to frequent updates | High paint cost from unnecessary renders | [X] Bad |
| Memoized selector with createSelector | Minimal recalculations | Single reflow per relevant state change | Lower paint cost from fewer renders | [OK] Good |