So, once again, JSX <i>is</i> JS. You&#x27;re free to write the exact same thing without XML syntax. If you don&#x27;t like that either, then what you&#x27;re really saying is <i>&quot;Don&#x27;t generate HTML using JS&quot;</i>. Why not? The benefits are obvious:<p>* With React &amp; ESLint you get basic checks to make sure you&#x27;re not passing non-existent variables<p>* Your IDE understands what you&#x27;re doing and lets you jump to callback definitions<p>* You understand what you&#x27;re doing because you have one obvious place where you do templating and data binding.<p>* Your actual behaviour logic is still separated from your template, living in some other JS file.<p>On the other hand, if you add event listeners to HTML from JS the classic way, you get other problems:<p>* You&#x27;re querying the DOM tree by CSS classes or some custom attributes. It&#x27;s surely a familiar way of doing things, but also fragile and unintuitive.<p>* It requires your JS to know the structure of your DOM to some extent, and that structure is defined elsewhere. So it&#x27;s basically the same problem as with mustache templates – passing around magic strings – but the other way around.<p>* Neither ESLint nor IDE will help you do it.