If you’re starting out with React, one of the first things you’ll come across is JSX. At first, JSX may look like HTML, but it’s actually a JavaScript extension that lets you write HTML-like code within your JavaScript files. Let’s break down what JSX is, how it’s different from regular HTML, and how it gets rendered into the browser.
What is JSX?
JSX stands for JavaScript XML, and it allows you to write HTML-like code inside your JavaScript. This makes building React components simpler because you can structure your user interface (UI) in a familiar way. Behind the scenes, JSX gets converted into regular JavaScript that the browser can run.
Why JSX is Different from HTML
Although JSX looks a lot like HTML, there are some important differences you should know:
- className instead of class:
In regular HTML, we use the class attribute to apply CSS styles to elements. However, in JSX, class is a reserved word in JavaScript. So, instead of class, we use className to avoid conflicts. - Embedding JavaScript in JSX: One of the cool features of JSX is that you can embed JavaScript expressions directly into your code using curly braces {}. This allows you to mix JavaScript logic right into your UI.
- Wrapping Elements in a Parent Element: Unlike HTML, JSX requires that multiple elements be wrapped in a single parent element. If you try to return two sibling elements without wrapping them, you’ll get an error. You can solve this by wrapping them in a div or a React Fragment (<>):
- Self-closing Tags: In JSX, tags that don’t have children (like
<img>
,<input>
, or<br>
) must be self-closed with a / at the end.
Rendering Elements with JSX
To display JSX in the browser, it needs to be rendered to the DOM. In React, this is done using the ReactDOM.render()
method. This function takes two arguments: the JSX element you want to render and the DOM node where you want to insert it. Once ReactDOM.render() runs, the JSX gets transformed into regular DOM elements that the browser can display. React efficiently updates only the parts of the DOM that have changed, making it fast and responsive.
Conclusion
JSX is one of the main features that makes React so powerful and easy to use. It allows you to write HTML-like code right inside your JavaScript, making it simpler to design complex user interfaces. While JSX looks a lot like HTML, it has some important differences—such as using className instead of class, requiring a parent wrapper for sibling elements, and embedding JavaScript logic directly into your UI.
As you work more with React, you’ll find JSX becomes second nature, helping you create dynamic and interactive user interfaces with ease.