<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=JavaScript_XML</id>
	<title>JavaScript XML - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=JavaScript_XML"/>
	<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=JavaScript_XML&amp;action=history"/>
	<updated>2026-04-17T03:11:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://70.231.62.181/index.php?title=JavaScript_XML&amp;diff=306803&amp;oldid=prev</id>
		<title>~2025-32447-81: /* Markup */</title>
		<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=JavaScript_XML&amp;diff=306803&amp;oldid=prev"/>
		<updated>2025-11-15T00:18:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Markup&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|JavaScript syntax extension}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;JSX&amp;#039;&amp;#039;&amp;#039; (sometimes referred to as &amp;#039;&amp;#039;&amp;#039;JavaScript XML&amp;#039;&amp;#039;&amp;#039;) is an [[XML]]-like extension to the [[JavaScript]] language syntax.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{cite web|title=Draft: JSX Specification|url=https://facebook.github.io/jsx/|website=JSX|publisher=Facebook|access-date=7 April 2018}}&amp;lt;/ref&amp;gt; Initially created by [[Meta Platforms|Facebook]] for use with [[React (JavaScript library)|React]], JSX has been adopted by multiple [[web framework]]s.&amp;lt;ref name=Larsen&amp;gt;{{cite book |last=Larsen|first=John|title=React Hooks in Action With Suspense and Concurrent Mode| year= 2021|publisher= Manning |isbn= 978-1720043997}}&amp;lt;/ref&amp;gt;{{rp|5}}&amp;lt;ref name=Wieruch&amp;gt;{{cite book |last=Wieruch|first=Robin|title=The Road to React |date=14 September 2018 |publisher= Leanpub|isbn= 978-1720043997}}&amp;lt;/ref&amp;gt;{{rp|11}} Being [[syntactic sugar]], JSX is generally [[transpiler|transpiled]] into nested JavaScript function calls structurally similar to the original JSX.&lt;br /&gt;
&lt;br /&gt;
When used with [[TypeScript]], the file extension is &amp;#039;&amp;#039;.tsx&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{Cite web |title=Documentation - JSX |url=https://www.typescriptlang.org/docs/handbook/jsx.html |access-date=2025-07-13 |website=www.typescriptlang.org |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Markup==&lt;br /&gt;
Below is an example of JSX (TSX) code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;tsx&amp;quot;&amp;gt;&lt;br /&gt;
import React from &amp;#039;react&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
const App: React.FC = () =&amp;gt; {&lt;br /&gt;
    return (&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;Header&amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;Content&amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;Footer&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    ); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
export default App;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Nested elements===&lt;br /&gt;
Multiple elements on the same level need to be wrapped in a single element such as the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; element shown above, a fragment delineated by &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;Fragment&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; or in its shorthand form &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;, or returned as an array.&amp;lt;ref&amp;gt;{{cite web |url=https://reactjs.org/blog/2017/09/26/react-v16.0.html#new-render-return-types-fragments-and-strings |title=React v16.0§New render return types: fragments and strings |last=Clark |first=Andrew |date=September 26, 2017 |website=React Blog}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://reactjs.org/docs/react-component.html#render |title=React.Component: render |website=React}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=Wieruch&amp;gt;{{cite book |last=Wieruch|first=Robin|title=The Road to React |date=14 September 2018 |publisher= Leanpub|isbn= 978-1720043997}}&amp;lt;/ref&amp;gt;{{rp|68-69}}&lt;br /&gt;
&lt;br /&gt;
===Attributes===&lt;br /&gt;
JSX provides a range of element attributes designed to mirror those provided by HTML. Custom attributes can also be passed to the component.&amp;lt;ref&amp;gt;{{cite web |url=https://reactjs.org/blog/2017/09/26/react-v16.0.html#support-for-custom-dom-attributes |title=React v16.0§Support for custom DOM attributes |last=Clark |first=Andrew |date=September 26, 2017 |website=React Blog}}&amp;lt;/ref&amp;gt; All attributes will be received by the component as props.&lt;br /&gt;
&lt;br /&gt;
===JavaScript expressions===&lt;br /&gt;
JavaScript [[Expression (computer science)|expressions]] (but not [[Statement (computer science)|statements]]) can be used inside JSX with curly brackets &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;:&amp;lt;ref name=Wieruch&amp;gt;{{cite book |last=Wieruch|first=Robin|title=The Road to React |date=14 September 2018 |publisher= Leanpub|isbn= 978-1720043997}}&amp;lt;/ref&amp;gt;{{rp|14-16}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;jsx&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;{10 + 1}&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example above will render:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;11&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Conditional expressions===&lt;br /&gt;
[[Conditional (computer programming)|If–else statements]] cannot be used inside JSX but conditional expressions can be used instead.&lt;br /&gt;
The example below will render {{code|2=js|1={ i === 1 ? &amp;#039;true&amp;#039; : &amp;#039;false&amp;#039; } }} as the string &amp;lt;code&amp;gt;&amp;#039;true&amp;#039;&amp;lt;/code&amp;gt; because &amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; is equal to 1.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;tsx&amp;quot;&amp;gt;&lt;br /&gt;
import React from &amp;#039;react&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
const App: React.FC = () =&amp;gt; {&lt;br /&gt;
    const i: number = 1;&lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;h1&amp;gt;{ i === 1 ? &amp;#039;true&amp;#039; : &amp;#039;false&amp;#039; }&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
export default App;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The above will render:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;true&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Functions and JSX can be used in conditionals:&amp;lt;ref name=Wieruch&amp;gt;{{cite book |last=Wieruch|first=Robin|title=The Road to React |date=14 September 2018 |publisher= Leanpub|isbn= 978-1720043997}}&amp;lt;/ref&amp;gt;{{rp|88-90}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;tsx&amp;quot;&amp;gt;&lt;br /&gt;
import React from &amp;#039;react&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
const App: React.FC = () =&amp;gt; {&lt;br /&gt;
    const sections: number[] = [1, 2, 3];&lt;br /&gt;
&lt;br /&gt;
    return (&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            {sections.map((n, i) =&amp;gt; (&lt;br /&gt;
                /* &amp;#039;key&amp;#039; is a React-specific attribute for tracking of list items and their changes */&lt;br /&gt;
                /* Each &amp;#039;key&amp;#039; must be unique */&lt;br /&gt;
                &amp;lt;div key={&amp;quot;section-&amp;quot; + n}&amp;gt;&lt;br /&gt;
                    Section {n} {i === 0 &amp;amp;&amp;amp; &amp;lt;span&amp;gt;(first)&amp;lt;/span&amp;gt;}&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            ))}&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
export default App;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above will render:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;Section 1 &amp;lt;span&amp;gt;(first)&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;Section 2&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;Section 3&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Code written in JSX requires conversion with a tool such as [[Babel (compiler)|Babel]] before it can be understood by web browsers.&amp;lt;ref&amp;gt;{{Cite book|url=https://books.google.com/books?id=Tg9QDwAAQBAJ|title=React for Real: Front-End Code, Untangled|last=Fischer|first=Ludovico|date=2017-09-06|publisher=Pragmatic Bookshelf|isbn=9781680504484|language=en}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=Larsen2021&amp;gt;{{cite book |last=Larsen|first=John|title=React Hooks in Action With Suspense and Concurrent Mode| year= 2021|publisher= Manning |isbn= 978-1720043997}}&amp;lt;/ref&amp;gt;{{rp|5}} This processing is generally performed during a [[software build]] process before the application is [[Software deployment|deployed]].&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[ECMAScript for XML]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* {{Official website|https://facebook.github.io/jsx}}, Draft: JSX specification&lt;br /&gt;
&lt;br /&gt;
[[Category:2014 software]]&lt;br /&gt;
[[Category:Facebook software]]&lt;br /&gt;
[[Category:JavaScript]]&lt;br /&gt;
[[Category:Open formats]]&lt;br /&gt;
[[Category:XML markup languages]]&lt;br /&gt;
&amp;lt;!-- Hidden categories below --&amp;gt;&lt;br /&gt;
[[Category:Articles with example JavaScript code]]&lt;/div&gt;</summary>
		<author><name>~2025-32447-81</name></author>
	</entry>
</feed>