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
  • Props: Passing and Receiving Data Down
  • Example
  • Props - Immutability & One-way Data Flow
  • Destructuring Props in React
  1. React Fundamentals

Lesson 9 - Props and One-Way Data Flow - Overview

PreviousLesson 8 - Understanding the Main Files - App.jsx and main.jsxNextLesson 10 - Google Bookshelf App - Ver 1.0

Last updated 5 months ago

Props: Passing and Receiving Data Down

  • What are Props?

    • Props, short for "properties," are a way to pass data from a parent component to its child components.

    • They are like arguments that you pass to a function.

    • Props are read-only(immutable), meaning child components cannot directly modify the props received from their parents.

  • How it works:

    • In the image, the "parent" component (App) holds the "Data (book list)."

    • The parent component passes this data as a prop to its "child" component (Book).

    • The child component receives the data as a prop and uses it to render its content.

  • One-way Data Flow:

    • Data flows in one direction: from parent to child.

    • This unidirectional flow helps maintain a clear and predictable data flow within your application.

Example

JavaScript

// Parent component (App.jsx)
function App() {
  const bookList = [
    { title: "Book 1", author: "Author 1" },
    { title: "Book 2", author: "Author 2" }
  ];

  return (
    <div>
      {bookList.map((book) => (
        <Book key={book.title} book={book} /> 
      ))}
    </div>
  );
}

// Child component (Book.jsx)
function Book(props) {
  const { title, author } = props; 

  return (
    <div>
      <h3>{title}</h3>
      <p>By {author}</p>
    </div>
  );
}

In this example:

  1. The App component holds an array of book objects (bookList).

  2. It passes each book object as a prop to the Book component using the book prop.

  3. The Book component receives the book object and uses its properties (title and author) to render the book information.

Key Points Illustrated in the Image

  • The image visually represents the flow of data from the parent component to the child component.

  • It emphasizes the one-way data flow principle in React.

  • It shows how props are used to pass data between components.

Props - Immutability & One-way Data Flow

Immutability

  • Props are immutable, meaning they cannot be changed directly by the child component.

  • This immutability is crucial for maintaining data consistency and preventing unintended side effects.

  • If a child component needs to update data that was passed as a prop, it should communicate this change back to the parent component, which can then update its own state and re-render the child component with the new data.

Importance of Props, Immutability & One-way Data Flow

  • Predictability: The one-way data flow makes it easier to understand how data moves through your application, improving code readability and maintainability.

  • Debugging: Immutability makes it easier to debug your application, as you can trace the source of changes in data more easily.

  • Performance: By minimizing unnecessary re-renders, immutability can help improve the performance of your application.

  • Testing: The predictable flow of data makes it easier to write and maintain tests for your components.

In Summary

Props, Immutability, and One-way Data Flow are fundamental principles in React that contribute to building robust, maintainable, and performant applications. By understanding and adhering to these principles, you can create cleaner, more predictable, and easier-to-debug React components.

Destructuring Props in React

Destructuring is a JavaScript syntax that allows you to extract values from arrays or objects into distinct variables. In React, it's commonly used to extract individual properties from props received by a component.

Example

Let's consider a Book component that receives the following props:

  • title

  • author

  • description

  • publicationYear

Without Destructuring:

JavaScript(JSX) - Book.jsx component

function Book(props) {
  return (
    <div>
      <h3>{props.title}</h3>
      <p>By: {props.author}</p>
      <p>{props.description}</p>
      <p>Published in: {props.publicationYear}</p>
    </div>
  );
}

With Destructuring:

JavaScript(JSX)-Book.jsx component

function Book({ title, author, description, publicationYear }) {
  return (
    <div>
      <h3>{title}</h3>
      <p>By: {author}</p>
      <p>{description}</p>
      <p>Published in: {publicationYear}</p>
    </div>
  );
}

Explanation

  • In the destructured version, we directly extract the title, author, description, and publicationYear properties from the props object and assign them to variables with the same names.

  • This eliminates the need to repeatedly use props. before each property, making the code more concise and readable.

Benefits of Destructuring Props

  • Improved Readability: Destructuring enhances code readability by making it more concise and easier to understand.

  • Reduced Repetition: It avoids repetitive use of props. throughout the component.

  • Better Maintainability: When prop names change, you only need to update the destructuring pattern, making code maintenance easier.

In Summary:

Destructuring props in React is a powerful technique that improves code readability, maintainability, and conciseness. It's a recommended practice for working with props in your React components.