P
Disagree, it is perfectly OK. First approach looks most clean and easy to understand. Context for this? Overengineering. Passing callbacks? What if you want to increment by custom amount? You would have to pass callback with arguments and in that case it is better to pass just setter. Also setState has stable reference AFIAK, so no need to use useCallback later.