Introduction to JSX
We canât talk about React without first explaining JSX.
You met your first React component, the App
component defined in the default application we built using Vite.
Its code was this:
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import './App.css'
function App() {
const [count, setCount] = useState(0)
return (
<div className="App">
<div>
<a href="https://vitejs.dev" target="_blank">
<img src="/vite.svg" className="logo" alt="Vite logo" />
</a>
<a href="https://reactjs.org" target="_blank">
<img src={reactLogo} className="logo react" alt="React logo" />
</a>
</div>
<h1>Vite + React</h1>
<div className="card">
<button onClick={() => setCount((count) => count + 1)}>
count is {count}
</button>
<p>
Edit <code>src/App.jsx</code> and save to test HMR
</p>
</div>
<p className="read-the-docs">
Click on the Vite and React logos to learn more
</p>
</div>
)
}
export default App
We previously ignored everything that was inside the return
statement, and in this section, weâre going to talk about it.
We call JSX everything thatâs wrapped inside the parentheses returned by the component:
<div className="App">
<div>
<a href="https://vitejs.dev" target="_blank">
<img src="/vite.svg" className="logo" alt="Vite logo" />
</a>
<a href="https://reactjs.org" target="_blank">
<img src={reactLogo} className="logo react" alt="React logo" />
</a>
</div>
<h1>Vite + React</h1>
<div className="card">
<button onClick={() => setCount((count) => count + 1)}>
count is {count}
</button>
<p>
Edit <code>src/App.jsx</code> and save to test HMR
</p>
</div>
<p className="read-the-docs">
Click on the Vite and React logos to learn more
</p>
</div>
This looks like HTML, but itâs not really HTML. Itâs a little different.
And itâs a bit strange to have this code inside a JavaScript file. This does not look like JavaScript at all!
Under the hood, React will process the JSX and will transform it into JavaScript that the browser will be able to interpret.
So weâre writing JSX, but in the end, thereâs a translation step that makes it digestible to a JavaScript interpreter.
React gives us this interface for one reason: itâs easier to build UI interfaces using JSX.
Once youâll get more familiar with it, of course.
In the next section, weâll talk about how JSX lets you easily compose a UI, then weâll look at the differences with ânormal HTMLâ that you need to know.
Last updated
Was this helpful?