Friday, November 15, 2024
Google search engine
HomeLanguagesReactJS JSX Introduction

ReactJS JSX Introduction

JSX stands for JavaScript XML. JSX is basically a syntax extension of JavaScript. It helps us to write HTML in JavaScript and forms the basis of React Development. Using JSX is not compulsory but it is highly recommended for programming in React as it makes the development process easier as the code becomes easy to write and read. 

JSX creates an element in React that gets rendered in the UI. It is transformed into JavaScript functions by the compiler at runtime. Error handling and warnings become easier to handle when using JSX

Let us see a sample JSX code:

const ele = <h1>This is sample JSX</h1>;

The above code snippet somewhat looks like HTML and it also uses a JavaScript-like variable but is neither HTML nor JavaScript, it is JSX(JavaScript XML). With the help of JSX, we have directly written the HTML syntax in JavaScript

Why JSX?

  • It is faster than normal JavaScript as it performs optimizations while translating to regular JavaScript.
  • It makes it easier for us to create templates.
  • Instead of separating the markup and logic in separate files, React uses components for this purpose. We will learn about components in detail in further articles.
  • As JSX is an expression, we can use it inside of if statements and for loops, assign it to variables, accept it as arguments, or return it from functions.

Expressions in JSX

In React we are allowed to use normal JavaScript expressions with JSX. To embed any JavaScript expression in a piece of code written in JSX we will have to wrap that expression in curly braces {}. The below example specifies a basic use of JavaScript Expression in React.

Syntax:

const example = "JSX"
const ele = <div>This component uses {example} </div>

Example: This example wraps the JSX code in curly braces

javascript




import React from 'react';
import ReactDOM from 'react-dom';
  
const name = "Learner";
  
const element = <h1>Hello, 
{ name }.Welcome to neveropen.< /h1>;
   
ReactDOM.render(
    element, 
    document.getElementById("root")
);


Output:

ReactJS JSX

In the above program, we have embedded the javascript expression const name = “Learner”; in our JSX code. We can use conditional statements instead of if-else statements in JSX. 

Example: In this example where conditional expression is embedded in JSX: 

javascript




import React from 'react';
import ReactDOM from 'react-dom';
  
let i = 1;
  
const element = <h1>{ (i == 1) ? 'Hello World!' : 'False!' } < /h1>;
   
ReactDOM.render(
    element, 
    document.getElementById("root")
);


Output: 

In the above example, the variable ‘i’ is checked if for the value 1. As it equals 1 so the string ‘Hello World!’ is returned to the JSX code. If we modify the value of the variable ‘i’ then the string ‘False!’ will be returned.

Attributes in JSX

JSX allows us to use attributes with the HTML elements just like we do with normal HTML. But instead of the normal naming convention of HTML, JSX uses the camelcase convention for attributes.&

  • The change of class attribute to className:

    The class in HTML becomes className in JSX. The main reason behind this is that some attribute names in HTML like ‘class‘ are reserved keywords in JavaScript. So, in order to avoid this problem, JSX uses the camel case naming convention for attributes. 

  • Creation of custom attributes:

    We can also use custom attributes in JSX. For custom attributes, the names of such attributes should be prefixed by data-* attribute.

Example: This example has a custom attribute with the <h2> tag and we are using className attribute instead of class. 

javascript




import React from 'react';
import ReactDOM from 'react-dom';
  
  
const element = <div><h1 className="hello">Hello Geek</h1>
    <h2 data-sampleAttribute="sample">Custom attribute</h2></div>;
  
  
ReactDOM.render(
    element,
    document.getElementById("root")
);


Output:

Specifying attribute values:

 JSX allows us to specify attribute values in two ways: 

  • As for string literals: We can specify the values of attributes as hard-coded strings using quotes:

    const ele = <h1 className = "firstAttribute">Hello!</h1>;
  • As expressions: We can specify attributes as expressions using curly braces {}: 

    const ele = <h1 className = {varName}>Hello!</h1>;

Wrapping elements or Children in JSX

Consider a situation where you want to render multiple tags at a time. To do this we need to wrap all of these tags under a parent tag and then render this parent element to the HTML. All the subtags are called child tags or children of this parent element.

Example: In this example we have wrapped h1, h2, and h3 tags under a single div element and rendered them to HTML:

javascript




import React from 'react';
import ReactDOM from 'react-dom';
  
  
const element = <div>
    <h1>This is Heading 1 </h1>
    <h2>This is Heading 2</h2 >
    <h3>This is Heading 3 </h3>
</div >;
  
ReactDOM.render(element, document.getElementById("root"));


Output:

REactJS JSX

Note: JSX will throw an error if the HTML is not correct or if there are multiple child elements without a parent element.

Comments in JSX: JSX allows us to use comments as it allows us to use JavaScript expressions. Comments in JSX begin with /* and ends with */. We can add comments in JSX by wrapping them in curly braces {} just like we did in the case of expressions. The below example shows how to add comments in JSX:  

javascript




import React from 'react';
import ReactDOM from 'react-dom';
  
  
const element = <div>
    <h1>
        Hello World !
        {/*This is a comment*/}
    </h1>
</div>;
  
ReactDOM.render(element, document.getElementById("root"));


Output:

Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!

RELATED ARTICLES

Most Popular

Recent Comments