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
  1. React Fundamentals

Lesson 2 - Motivation for Using React as the Solution to Vanilla JS

PreviousLesson 1 - Understanding Old vs New Way of Building Web Apps - SPAsNextLesson 3 - What is ReactJS - How it Works

Last updated 5 months ago

What is Vanilla JavaScript?

  • Vanilla JavaScript refers to using plain JavaScript without any third-party libraries or frameworks. It means working directly with the browser's built-in JavaScript objects and APIs to manipulate the Document Object Model (DOM), handle events, and create dynamic web interactions.

Building with Vanilla JavaScript

  1. Manipulating the DOM: You directly access and modify HTML elements using methods like getElementById(), querySelector(), innerHTML, appendChild(), etc.

  2. Handling Events: You attach event listeners to elements to respond to user interactions (e.g., clicks, hovers, key presses) using addEventListener().

  3. Working with APIs: You can make HTTP requests to fetch data from external sources using fetch() or the XMLHttpRequest object.

Limitations of Vanilla JavaScript in Complex Web Development

The image highlights two key limitations:

  1. DOM Manipulation and Traversal:

    • Direct manipulation and traversal of the DOM can lead to complex and hard-to-maintain code, especially in large-scale applications.

    • Changes in one part of the DOM might unintentionally affect other parts, making debugging and refactoring difficult.

  2. Data/State Management:

    • Vanilla JavaScript often lacks a clear separation between data and the DOM. Changes to data often require direct updates to the DOM, which can be error-prone and lead to bugs.

    • Managing complex state and keeping the DOM in sync can become challenging.

Motivation for Using React as a Solution

React addresses these limitations by:

  1. Component-Based Architecture: React encourages breaking down the UI into reusable components, each managing its own state and rendering logic. This promotes modularity, code reusability, and easier maintenance.

  2. Virtual DOM: React uses a virtual representation of the DOM. When data changes, React efficiently compares the virtual DOM with the actual DOM and only updates the parts that have actually changed. This significantly improves performance.

  3. Data Flow Management: React provides a unidirectional data flow mechanism (often using techniques like Redux or Context API) to manage and update state effectively. This makes it easier to reason about data changes and prevent unexpected side effects.

  4. Large Ecosystem: React has a vast ecosystem of libraries and tools that can help you build complex applications more efficiently.

In essence, React provides a structured and efficient way to build dynamic and interactive user interfaces, addressing the limitations of direct DOM manipulation and state management inherent in Vanilla JavaScript.