With data attributes, any current browser supports the dataset property on the dom object... so e.target.dataset.id instead of e.target.getAttribute('data-id')
Other than that, the useCallback method is interresting at least.
I tend to prefer data attributes (dataset) because then it renders and is able to be utilized by ui/integration test frameworks.