When does useMemo recompute?
const value = useMemo(() => expensiveCalc(a, b), [a, b]);
When a or b changes
On every render
Only on first render
Never