Instead of mocking for UI components, I separate components into display components and container components.
The containers manage state and side-effects --I don’t unit test those at all. Instead, I use functional tests.
I keep state transitions in pure reducer functions. Easy to test in isolation from the container.
The display components are just pure functions of their props. Easy to unit test with no mocks.
The result is great unit coverage + great integration coverage because of the functional tests, and NO MOCKS. ☺