I agree that when you first get into React, it feels wrong, and almost...dirty. We've been teaching people since the early 2000's about "separation of concerns" only to feel like you're throwing that all away.
However, as I eventually realized, you aren't throwing that away. The markup and logic are still mostly separate. Most of the work happens outside the render function, and the logic that does happen inside of it is another script you'd have to write elsewhere.
Additionally, bear in mind that you aren't inserting HTML. You're manipulating the DOM directly. Those are 2 very different paradigms, even if it doesn't seem like it on the surface.