I hear this complaint a lot about JSX but what you have to understand is that it is
actually way better than using a template language.
If you're also against things like Handlebars, ERB, Smarty, etc then fine... but otherwise this doesn't hold up.
Why? Because all template languages must be compiled to the host language to work. Handlebars ends up as JS functions (and really ugly and messy ones I might add) for example.
This is fine if, for some reason, you're in 2001 and handing off all templating to designers who know nothing about code and just have to put HTML in a template with the right variables... but it's a very very janky practice.
JSX just says "well, why bother when you can do it in the right place in the first place?" Template languages have logic so why not just use JS and correctly encapsulate the logic in a View?
Answer? No good reason to not do that... so it's a net win.