Caching a function with useCallback is only valuable in a few cases:
You pass it as a prop to a component wrapped in memo. You want to skip re-rendering if the value hasn’t changed. Memoisation lets your component re-render only if dependencies change.
The function you’re passing is later used as a dependency of some Hook. For example, another function wrapped in useCallback depends on it, or you depend on this function from useEffect.