0% found this document useful (0 votes)
16 views

Introduction To React - JSX Cheatsheet

The document provides an introduction to JSX syntax in React, covering the following key points: 1. JSX must have a single outermost element, allows nested elements, and uses syntax similar to HTML. 2. JSX is a syntax extension of JavaScript that gets compiled before reaching the browser. 3. JavaScript expressions can be embedded within curly braces in JSX. 4. ReactDOM renders JSX to the DOM, taking a JSX expression and creating a corresponding DOM tree.

Uploaded by

Nima Shahi
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Introduction To React - JSX Cheatsheet

The document provides an introduction to JSX syntax in React, covering the following key points: 1. JSX must have a single outermost element, allows nested elements, and uses syntax similar to HTML. 2. JSX is a syntax extension of JavaScript that gets compiled before reaching the browser. 3. JavaScript expressions can be embedded within curly braces in JSX. 4. ReactDOM renders JSX to the DOM, taking a JSX expression and creating a corresponding DOM tree.

Uploaded by

Nima Shahi
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Cheatsheets / Introduction to React

JSX

Nested JSX elements


In order for the code to compile, a JSX expression must const myClasses = (
have exactly one outermost element. In the below block
<a href="https://www.codecademy.com">
of code the <a> tag is the outermost element.
<h1>
Sign Up!
</h1>
</a>
);

JSX Syntax and JavaScript


JSX is a syntax extension of JavaScript. It’s used to create import React from 'react';
DOM elements which are then rendered in the React
import ReactDOM from 'react-dom';
DOM.
A JavaScript file containing JSX will have to be compiled
before it reaches a web browser. The code block shows ReactDOM.render(<h1>Render me!</h1>,
some example JavaScript code that will need to be
document.getElementById('app'));
compiled.

Multiline JSX Expression


A JSX expression that spans multiple lines must be const myList = (
wrapped in parentheses: ( and ) . In the example code,
<ul>
we see the opening parentheses on the same line as the
constant declaration, before the JSX expression begins. <li>item 1</li>
We see the closing parentheses on the line following the <li>item 2</li>
end of the JSX expression.
<li>item 3</li>
</ul>
);

JSX syntax and HTML


In the block of code we see the similarities between JSX const title = <h1>Welcome all!</h1>
syntax and HTML: they both use the angle bracket
opening and closing tags ( <h1> and </h1> ).
When used in a React component, JSX will be rendered
as HTML in the browser.
JSX attributes
The syntax of JSX attributes closely resembles that of const example = <h1 id="example">JSX
HTML attributes. In the block of code, inside of the
Attributes</h1>;
opening tag of the <h1> JSX element, we see an id
attribute with the value "example" .

ReactDOM JavaScript library


The JavaScript library react-dom , sometimes called ReactDOM.render(
ReactDOM , renders JSX elements to the DOM by
<h1>This is an example.</h1>,
taking a JSX expression, creating a corresponding tree of
DOM nodes, and adding that tree to the DOM. document.getElementById('app')
The code example begins with ReactDOM.render() . );
The first argument is the JSX expression to be compiled
and rendered and the second argument is the HTML
element we want to append it to.

Embedding JavaScript in JSX


JavaScript expressions may be embedded within JSX let expr = <h1>{10 * 10}</h1>;
expressions. The embedded JavaScript expression must
// above will be rendered as <h1>100</h1>
be wrapped in curly braces.
In the provided example, we are embedding the
JavaScript expression 10 * 10 within the <h1> tag.
When this JSX expression is rendered to the DOM, the
embedded JavaScript expression is evaluated and
rendered as 100 as the content of the <h1> tag.

The Virtual Dom


React uses Virtual DOM, which can be thought of as a
blueprint of the DOM. When any changes are made to
React elements, the Virtual DOM is updated. The Virtual
DOM finds the differences between it and the DOM and
re-renders only the elements in the DOM that changed.
This makes the Virtual DOM faster and more efficient than
updating the entire DOM.

JSX className
In JSX, you can’t use the word class ! You have to use // When rendered, this JSX expression...
className instead. This is because JSX gets translated
const heading = <h1 className="large-
into JavaScript, and class is a reserved word in
JavaScript. heading">Codecademy</h1>;
When JSX is rendered, JSX className attributes are
automatically rendered as class attributes. // ...will be rendered as this HTML
<h1 class="large-heading">Codecademy</h1>

JSX and conditional


In JSX, && is commonly used to render an element // All of the list items will display if
based on a boolean condition. && works best in
// baby is false and age is above 25
conditionals that will sometimes do an action, but other
times do nothing at all. const tasty = (
If the expression on the left of the && evaluates as <ul>
true, then the JSX on the right of the && will be <li>Applesauce</li>
rendered. If the first expression is false, however, then the
JSX to the right of the && will be ignored and not
{ !baby && <li>Pizza</li> }
rendered. { age > 15 && <li>Brussels
Sprouts</li> }
{ age > 20 && <li>Oysters</li> }
{ age > 25 && <li>Grappa</li> }
</ul>
);

JSX conditionals
JSX does not support if/else syntax in embedded // Using ternary operator
JavaScript. There are three ways to express conditionals
const headline = (
for use with JSX elements:
1. a ternary within curly braces in JSX <h1>
2. an if statement outside a JSX element, or { age >= drinkingAge ? 'Buy Drink' :
3. the && operator.
'Do Teen Stuff' }
</h1>
);

// Using if/else outside of JSX


let text;

if (age >= drinkingAge) { text = 'Buy


Drink' }
else { text = 'Do Teen Stuff' }

const headline = <h1>{ text }</h1>

// Using && operator. Renders as empty div


if length is 0
const unreadMessages = [ 'hello?',
'remember me!'];

const update = (
<div>
{unreadMessages.length > 0 &&
<h1>
You have {unreadMessages.length}
unread messages.
</h1>
}
</div>
);

Embedding JavaScript code in JSX


Any text between JSX tags will be read as text content, <p>{ Math.random() }</p>
not as JavaScript. In order for the text to be read as
JavaScript, the code must be embedded between curly
braces { } . // Above JSX will be rendered something
like this:
<p>0.88</p>

JSX element event listeners


In JSX, event listeners are specified as attributes on // Basic example
elements. An event listener attribute’s name should be
const handleClick = () => alert("Hello
written in camelCase, such as onClick for an onclick
event, and onMouseOver for an onmouseover event. world!");
An event listener attribute’s value should be a function.
Event listener functions can be declared inline or as
const button = <button onClick=
variables and they can optionally take one argument
representing the event. {handleClick}>Click here</button>;

// Example with event parameter


const handleMouseOver = (event) =>
event.target.style.color = 'purple';

const button2 = <div onMouseOver=


{handleMouseOver}>Drag here to change
color</div>;

Setting JSX attribute values with embedded JavaScript


When writing JSX, it’s common to set attributes using const introClass = "introduction";
embedded JavaScript variables.
const introParagraph = <p className=
{introClass}>Hello world</p>;

JSX .map() method


The array method map() comes up often in React. It’s const strings = ['Home', 'Shop', 'About
good to get in the habit of using it alongside JSX.
Me'];
If you want to create a list of JSX elements from a given
array, then map() over each element in the array,
returning a list item for each one. const listItems = strings.map(string =>
<li>{string}</li>);

<ul>{listItems}</ul>

JSX empty elements syntax


In JSX, empty elements must explicitly be closed using a <br />
closing slash at the end of their tag: <tagName /> .
<img src="example_url" />
A couple examples of empty element tags that must
explicitly be closed include <br> and <img> .

React.createElement() Creates Virtual DOM Elements


The React.createElement() function is used by React to // The following JSX...
actually create virtual DOM elements from JSX. When the
const h1 = <h1 className="header">Hello
JSX is compiled, it is replaced by calls to
React.createElement() . world</h1>;
You usually won’t write this function yourself, but it’s
useful to know about.
// ...will be compiled to the following:
const h1 = React.createElement(
'h1',
{
className: 'header',
},
'Hello world'
);

JSX key attribute


In JSX elements in a list, the key attribute is used to <ul>
uniquely identify individual elements. It is declared like
<li key="key1">One</li>
any other attribute.
Keys can help performance because they allow React to <li key="key2">Two</li>
keep track of whether individual list items should be <li key="key3">Three</li>
rendered, or if the order of individual items is important.
<li key="key4">Four</li>
</ul>

Print Share

You might also like