ReactJS-The Beginner Master Class
  • React In the Beginning
    • Lesson 1 - Demo: Build a Simple React App - Fast
    • Lesson 2 - HTML Review
    • Lesson 3 - CSS Review
    • Lesson 4 - Modern JavaScript (JSX) Patterns
    • Lesson 5 - Set up Dev Environment
    • Hands-on Practice
  • React Fundamentals
    • Lesson 1 - Understanding Old vs New Way of Building Web Apps - SPAs
    • Lesson 2 - Motivation for Using React as the Solution to Vanilla JS
    • Lesson 3 - What is ReactJS - How it Works
    • React Code Along from Scratch
    • Lesson 4 - Create and Run a React Project with Vite - Full Overview
    • Lesson 5 - Create Hook by State Management in React
    • Lesson 6 - React Project File and Folder Walkthrough
    • Lesson 7 - JSX and How React Treats the DOM & JSX Compilation(by Babeljs) - Overview
    • Lesson 8 - Understanding the Main Files - App.jsx and main.jsx
    • Lesson 9 - Props and One-Way Data Flow - Overview
    • Lesson 10 - Google Bookshelf App - Ver 1.0
    • Hands-on Practice I
    • Hands-on Practice II
  • React State and Styling
    • Lesson 1 - Pulling Book Data from a Different Data File
    • Lesson 2 - Overview of How State Works in React
    • Lesson 3 - RandomQuote App
    • Lesson 4 - Lifting State Up - React Pattern Overview
    • Hands-On - Simple Counter
  • Forms and Interactivity - Grocery List App
    • Lesson 1 - Setup a Simple Form and Input
    • Lesson 2 - Build Form Profile App Using Multi-input Form Data
    • Hands-on : Build a Grocery List App
  • Connecting to the Backend - Consuming APIs - UseEffect Hook
    • Lesson 1 - Connecting to the Back End - Understanding Side Effects, Hooks and useEffect - Overview
    • Lesson 2 - Fetching Data from the Backend the Right Way with useEffect Hook
    • Lesson 3 - Setting Up Loading State
    • Hands-on :Use Dependency Array and Adding Values that Control Side Effects
  • Solo Project 1
  • RESTful APIs :Build a BookSearch App -Ver 2.0
    • Lesson 1: Build and test RESTful APIs with Postman
    • Lesson 2 - BookShelf App Structure
    • Lesson 3 - Create NavBar.jsx Component
    • Lesson 4 - Create Footer Component
    • Lesson 5 - Create BookList.jsx Component
    • Lesson 6 - Create BookCard.jsx Component
    • Lesson 7 - Creating Custom Hooks - useBooks and api-client
    • Lesson 8 - Controlling Network Activities in React with AbortController
    • Lesson 9 - Show Book Details in a Modal - Working
    • Lesson 10 - Bookshelf App Summary
  • Multi-Page Applications (MPAs)
    • Build a Multi-Page React Application
    • Multi-Page React Application
    • Hands-on Practice
  • Backend Frameworks-NEXT.JS
    • Migrating from React to Next.js
    • Lesson 1: Key Concepts of NodeJS and Express for Backend Web Development
    • Lesson 2: How to set up a new Next.js project
    • Lesson 3: How to create Layouts and Pages
    • Hands-on Practice 1
    • Hands on Practice 2
      • New Project & Folder Structure
      • File-Based Routing
      • Server vs Client Components & Router Hooks
      • Start On The Navbar
      • Navbar Links, Dropdowns & React Icons
      • Active Links & Conditional Rendering
      • Homepage Components
      • Properties Page
      • Property Card Dynamic Data
      • Home Property Listings
      • Custom Not Found & Loading Pages
  • Git and GitHubs
    • Git Installation
    • Git Commands
    • GitHub Repository
    • Hands-on Practice
  • Database in Application
    • React Supabase CRUD
    • Hands-on: Note Taking App
  • NoSQL Database
    • Installing MongoDB Community Edition
    • System Env Path Setting
    • How to use MongoDB Shell
    • How to Connect and Use Mongosh in VS Code via MongoDB Extension
    • MongoDB Guide
  • Solo Project 2
  • Deployment and Web Hosting
    • Lesson 1. React+Vite+TS+Shadcn Project
    • Lesson 2. Deploying a React Vite App to Vercel from Vercel CLI
    • Lesson 3 Connecting to GitHub Repo and Automate Deployment
  • Solo Project 3
  • Final Term Project
    • Level 1 Team Project
    • Level 1 Team Project
    • Level 1 Team Project
    • Level 1 Team Project
    • Level 2 Team Project
    • Level 2 Team Project
    • Level 3 Team Project
    • Level 3 Team Project
Powered by GitBook
On this page
  • JSX -JavaScript (XML)
  • How React Treats the DOM
  • Babeljs - JSX Compiled to JavaScript
  • 1. JSX Compiler Overview
  1. React Fundamentals

Lesson 7 - JSX and How React Treats the DOM & JSX Compilation(by Babeljs) - Overview

PreviousLesson 6 - React Project File and Folder WalkthroughNextLesson 8 - Understanding the Main Files - App.jsx and main.jsx

Last updated 5 months ago

JSX -JavaScript (XML)

What is JSX?

  • JSX stands for JavaScript XML. It's a syntax extension to JavaScript that allows you to write HTML-like code within your JavaScript files.

  • Enhanced Readability: JSX makes your component structure more visually intuitive and easier to read, particularly for developers familiar with HTML.

  • Simplified DOM Manipulation: JSX abstracts away the complexities of directly manipulating the DOM (Document Object Model), making it easier to build and update UI elements.

JSX vs. Compiled JavaScript

The image illustrates the transformation process:

  1. JSX Code (Human-Readable):

    • You write JSX code using HTML-like syntax within your JavaScript files.

    • For example: const element = <h1 className="greeting">Hello, world!</h1>;

  2. JSX Compiler (Babel):

    • Before the browser can understand and execute your code, the JSX code needs to be converted into plain JavaScript.

    • Babel is a popular JavaScript compiler that handles this transformation.

  3. Compiled JavaScript (Browser-Understood):

    • Babel converts the JSX code into calls to React.createElement().

    • This function creates a JavaScript object representing the HTML element.

How React Treats the DOM

React's Approach to the DOM

The image illustrates the difference between traditional DOM manipulation and how React handles it.

Traditional DOM Manipulation:

  • Direct Manipulation: Developers directly interact with the DOM using JavaScript methods like getElementById(), setAttribute(), createElement(), appendChild(), etc.

  • Performance Overhead: Each change to the DOM triggers a costly process of re-rendering and updating the entire page or the affected parts. This can lead to performance issues, especially in complex applications.

React's Virtual DOM:

  • Virtual Representation: React creates a virtual representation of the actual DOM in memory. This virtual DOM is an efficient JavaScript object that mirrors the structure of the actual DOM.

  • Efficient Updates: When data changes in a React component, React updates the virtual DOM. Then, React compares the virtual DOM with the actual DOM and identifies only the specific changes that need to be made.

  • Minimal DOM Manipulation: React only updates the actual DOM with the minimal set of changes required, which significantly improves performance.

In essence, React's virtual DOM acts as an intermediary between your component code and the actual DOM. This approach allows React to optimize the rendering process and make updates efficiently, resulting in a faster and more responsive user experience.

Key Points Illustrated in the Image:

  • The image highlights the traditional DOM manipulation methods with comments explaining their purpose.

  • It contrasts this with the React approach, emphasizing the use of a virtual DOM for efficient updates.

Babeljs - JSX Compiled to JavaScript

1. JSX Compiler Overview

Click "Try it out" menu

Example

// Put in next-gen JavaScript (JSX)
function UserProfile({ name, email, bio }) {
  return (
    <div className="user-profile">
      <h1>{name}</h1>
      <p>Email: {email}</p>
      <p>Bio: {bio}</p>
    </div>
  );
}
// Get browser-compatible JavaScript out (Chrome)
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
function UserProfile({
  name,
  email,
  bio
}) {
  return /*#__PURE__*/_jsxs("div", {
    className: "user-profile",
    children: [/*#__PURE__*/_jsx("h1", {
      children: name
    }), /*#__PURE__*/_jsxs("p", {
      children: ["Email: ", email]
    }), /*#__PURE__*/_jsxs("p", {
      children: ["Bio: ", bio]
    })]
  });
}

Babaljs site :

https://babeljs.io/