DEV Community

Cover image for JSX and React: Learn how to Write Maintainable Code – CheatSheet
Ahmed Radwan
Ahmed Radwan

Posted on • Originally published at nerdleveltech.com

JSX and React: Learn how to Write Maintainable Code – CheatSheet

1. Introduction

Welcome to our exploration of React! In this article, we'll discuss the value of React and whether it's worth learning today. We will take a deep dive into this popular front-end library, keeping our explanations simple and easy to understand. We'll provide well-documented code examples along the way to help clarify concepts. So, let's dive in!

1.1. The Value of React: Is it Worth Learning Today

React is often described as a library rather than a framework, which gives it a high degree of flexibility. This means you can easily integrate it with other libraries or tools in your web development stack. Additionally, React's ecosystem includes various state management libraries (such as Redux and MobX) and routing solutions (like React Router), giving you the power to customize your application to your specific needs.

React has consistently evolved and adapted to changes in web development trends, which speaks to its longevity. With the introduction of features like React Hooks and concurrent rendering, React has continued to stay ahead of the curve. Learning React today means investing in a technology that is likely to remain relevant for years to come.

In conclusion, React is a valuable skill to learn due to its popularity, component-based architecture, performance, flexibility, and future-proofing potential. If you're looking to expand your web development skill set, React is definitely worth considering.

2. React Nuts and Bolts

2.1. How Does React Work?

React is built around the concept of components. Components are reusable pieces of code that manage their own state and render logic. React applications are typically composed of multiple components that work together to create a seamless user experience. Let's delve into the key concepts that make React work.

2.2. Virtual DOM

One of the most important aspects of React is its use of a virtual DOM. The virtual DOM is a lightweight in-memory representation of the actual DOM, which allows React to efficiently manage updates to the user interface. When a component's state or props change, React creates a new virtual DOM tree and compares it with the existing one using a process called "reconciliation". This process identifies the minimal set of updates required to synchronize the actual DOM with the new virtual DOM, resulting in optimized performance.

2.3. Reconciliation

Reconciliation is the process through which React determines the differences between the current virtual DOM and the new one. React uses a diffing algorithm to perform this comparison efficiently. Once the differences have been identified, React applies the necessary updates to the actual DOM, ensuring that only the changed parts of the user interface are updated. This helps improve the performance of React applications, especially when dealing with complex UIs.

2.4. Components

As mentioned earlier, components are the building blocks of a React application. There are two types of components in React: functional components and class components. Functional components are simple JavaScript functions that return elements describing what should be rendered on the screen, while class components are JavaScript classes that extend the React.Component base class and implement a render() method.

2.5. State and Props

State and props are the two ways that components manage and pass data in a React application. State is used to store local data within a component, while props are used to pass data from parent components to their children.

2.6. Event Handling

React provides a simple and consistent way to handle events like clicks, form submissions, or keyboard input. Event handling in React involves passing event handler functions as props to components, which are then executed when the event occurs.

3. Decoding JSX

3.1. Diving Deep into JSX and Its Role in React

JSX (JavaScript XML) is a syntax extension for JavaScript that allows you to write HTML-like code within your JavaScript files. JSX makes it easy to create and manage the structure of your user interface directly in your JavaScript code, resulting in a more readable and maintainable codebase.

3.1.1. Basic Syntax

At its core, JSX allows you to write HTML-like elements within your JavaScript code. These elements are later transformed into regular JavaScript objects by a compiler like Babel before being executed in the browser.

Here's an example of a simple JSX element:

const element = <h1>Hello, world!</h1>;

3.1.2. Embedding Expressions in JSX

One of the most powerful features of JSX is its ability to embed JavaScript expressions within the markup. To do this, simply wrap the expression in curly braces ({}).

Example:

const name = 'John Doe';
const element = <h1>Hello, {name}!</h1>;

3.1.3. Attributes and Props

JSX elements can have attributes, just like HTML elements. These attributes are later passed down to React components as props.

Example:

const element = <img src="my-image.jpg" alt="A beautiful scenery" />;

Note: Since JSX is closer to JavaScript than HTML, it uses the camelCase naming convention for attributes with multiple words, such as onClick and className.

3.1.4. Child Elements and Self-Closing Tags

JSX elements can have child elements, just like HTML. However, if an element doesn't have any children, it must be closed with a forward slash (/).

Example with child elements:

const element = (
  <div>
    <h1>Hello, world!</h1>
    <p>Welcome to our website.</p>
  </div>
);

Example with a self-closing tag:

const element = <img src="my-image.jpg" alt="A beautiful scenery" />;

3.1.5. React Components and JSX

JSX is primarily used for defining the structure and appearance of React components. Both functional and class components can return JSX elements, which are then rendered by React.

Functional component example:

function Welcome(props) {
  return <h1>Hello, {props.name}!</h1>;
}

Class component example:

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}!</h1>;
  }
}

4. The "React Essentials" Cheat Sheet

We will provide you with a concise "React Essentials" Cheat Sheet, covering the most important concepts and features you need to know when working with React.

To start using React in your project, you'll need to import both React and ReactDOM:

import React from 'react';
import ReactDOM from 'react-dom';

Components are the building blocks of a React application. You can create a functional component like this:

function Welcome(props) {
  return <h1>Hello, {props.name}!</h1>;
}

Or, you can create a class component like this:

class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}!</h1>;
  }
}

To render a component in the DOM, use the ReactDOM.render() method:

ReactDOM.render(<Welcome name="John" />, document.getElementById('root'));

Props allow you to pass data to your components:

function Welcome(props) {
  return <h1>Hello, {props.name}!</h1>;
}

ReactDOM.render(<Welcome name="Jane" />, document.getElementById('root'));

State allows you to store local data within a component. To use state, you'll need to use a class component and initialize the state in the constructor:

class Clock extends React.Component {
  constructor(props) {
    super(props);
    this.state = { date: new Date() };
  }

  render() {
    return <div>{this.state.date.toLocaleTimeString()}</div>;
  }
}

Lifecycle methods, like componentDidMount() and componentWillUnmount(), allow you to perform actions when a component is created, updated, or removed:

class Clock extends React.Component {
  // ...

  componentDidMount() {
    this.timerID = setInterval(() => this.tick(), 1000);
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

  tick() {
    this.setState({ date: new Date() });
  }

  // ...
}

React allows you to handle events, like button clicks or form submissions, using event handlers:

class ButtonClick extends React.Component {
  handleClick() {
    console.log('Button clicked!');
  }

  render() {
    return <button onClick={this.handleClick}>Click me!</button>;
  }
}

You can conditionally render elements based on the state or props:

function Greeting(props) {
  if (props.isLoggedIn) {
    return <h1>Welcome back!</h1>;
  } else {
    return <h1>Please sign up.</h1>;
  }
}

React Hooks allow you to use state and lifecycle features in functional components. The most common hooks are useState and useEffect:

import React, { useState, useEffect } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    document.title = `Count: ${count}`;

    return () => {
      document.title = 'React App';
    };
  });

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
</div>
  );
}

In this concise "React Essentials" Cheat Sheet, we've covered key concepts and features, such as importing React and ReactDOM, creating components, rendering components, using props, state and lifecycle methods, handling events, conditional rendering, and React Hooks. This quick reference should help you grasp the fundamentals of React and provide a foundation for building your own React applications. Remember to refer back to this cheat sheet as you learn and grow as a React developer!

Conclusion

In conclusion, JSX is a powerful syntax extension for JavaScript that has become an integral part of React development. Its unique ability to blend HTML-like elements with JavaScript expressions simplifies the process of building and maintaining user interfaces.

Understanding JSX and its role in React will undoubtedly enhance your ability to build robust and visually appealing applications. Embrace the power of JSX and unlock the full potential of React in your projects.

Top comments (10)

Collapse
 
ibrahimraimi profile image
Ibrahim Raimi

Grate article Ahmed.

Collapse
 
aradwan20 profile image
Ahmed Radwan

Thanks a million Ibrahim

Collapse
 
mezieb profile image
Okoro chimezie bright

Nice work please keep up the good job.

Collapse
 
aradwan20 profile image
Ahmed Radwan

Thanks a million

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
aradwan20 profile image
Ahmed Radwan • Edited

Thank you so much, Chantal

Collapse
 
jake0011 profile image
JAKE

thanks Ahmed, this is really helping my journey learning react.

Collapse
 
aradwan20 profile image
Ahmed Radwan

Great, thank you so much Jake

Collapse
 
jasperjac profile image
JasperJac

Oh wonderful...
that is very useful

Collapse
 
aradwan20 profile image
Ahmed Radwan

Thanks, I see you're a new member. Welcome to the community. Start share your your thoughts and knowledge with us here as well!