One way to think about it is JSX is just another templating language that happens to be a superset of JavaScript. You are free to use as much or as little logic as you like, but the trend is definitely moving towards keeping most components simple and free of complex logic.<p>With &quot;stateless functional components&quot; (added in React 0.14) and ES6 you can have &quot;templates&quot; that look like this:<p><pre><code>    export default ({ title, author, body }) =&gt;
      &lt;div&gt;
        &lt;h1&gt;{title}&lt;&#x2F;h1&gt;
        &lt;h2&gt;By {author}&lt;&#x2F;h2&gt;
        &lt;p&gt;{body}&lt;&#x2F;p&gt;
      &lt;&#x2F;div&gt;
</code></pre>
I wonder if anyone has written a linter to enforce a &quot;logic-less&quot; dialect of JSX? Perhaps allowing specific looping and conditional idioms like:<p><pre><code>    { array.map(object =&gt;
      &lt;div&gt;{object.whatever}&lt;&#x2F;div&gt;
    ) }
</code></pre>
and<p><pre><code>    { foo ?
      &lt;div&gt;yes&lt;&#x2F;div&gt;
    :
      &lt;div&gt;no&lt;&#x2F;div&gt;
    }</code></pre>