Logo

dev-resources.site

for different kinds of informations.

Describing the React UI

Published at
11/16/2024
Categories
react
rsmacademybd
reacttutorial
webdev
Author
rsmacademybd
Author
12 person written this
rsmacademybd
open
Describing the React UI

React āĻšāĻšā§āĻ›ā§‡ āĻāĻ•āĻŸāĻŋ JavaScript āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĨ¤ āĻ¯āĻž āĻ‡āĻ‰āĻœāĻžāĻ° āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻœ (UI) āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤
React-āĻāĻ° āĻ¸āĻŦāĻšā§‡ā§Ÿā§‡ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻĻāĻŋāĻ• āĻšāĻšā§āĻ›ā§‡ āĻāĻ° component-based architectureāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ UI āĻ…āĻ‚āĻļāĻ•ā§‡ āĻ›ā§‹āĻŸ, āĻĒā§āĻ¨āĻƒāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ components āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ:

  • Header Component: āĻ˛ā§‡āĻ†āĻ‰āĻŸā§‡āĻ° āĻļā§€āĻ°ā§āĻˇā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšā§ŸāĨ¤
  • Sidebar Component: āĻĒāĻžāĻļā§‡āĻ° āĻŽā§‡āĻ¨ā§ āĻŦāĻžāĻ° āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĨāĻžāĻ•ā§‡āĨ¤
  • Main Content Component: āĻŽā§‚āĻ˛ āĻŦāĻŋāĻˇā§ŸāĻŦāĻ¸ā§āĻ¤ā§ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯āĨ¤
  • Footer Component: āĻĒā§ƒāĻˇā§āĻ āĻžāĻ° āĻ¨āĻŋāĻšā§‡āĻ° āĻ…āĻ‚āĻļāĨ¤

React-āĻāĻ° componentāĻ—ā§āĻ˛ā§‹ hierarchical āĻ­āĻžāĻŦā§‡ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻšā§ŸāĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡, āĻāĻ•āĻŸāĻŋ parent component āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ child components āĻĨāĻžāĻ•ā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function App() {
  return (
    <div>
      <Header />
      <Sidebar />
      <MainContent />
      <Footer />
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ App component āĻšāĻ˛ parent component, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ components āĻ°ā§Ÿā§‡āĻ›ā§‡āĨ¤

React UI āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ā§‡āĻ° āĻŽā§‚āĻ˛ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻ˛ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ UI āĻ…āĻ‚āĻļ āĻŦāĻž āĻĢāĻŋāĻšāĻžāĻ°āĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻ•āĻ°ā§‡āĨ¤ āĻ¯ā§‡āĻŽāĻ¨āĻƒ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻŸāĻ¨, āĻĢāĻ°ā§āĻŽ, āĻŦāĻž āĻ•āĻžāĻ°ā§āĻĄāĨ¤ āĻ›ā§‹āĻŸ āĻ›ā§‹āĻŸ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻŦāĻĄāĻŧ UI āĻ—āĻ āĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

React āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ HTML āĻāĻŦāĻ‚ JavaScript āĻāĻ•āĻ¸āĻžāĻĨā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ JSX āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡āĨ¤ āĻāĻŸāĻŋ HTML āĻāĻ° āĻŽāĻ¤ā§‹āĻ‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻ˛ā§‡āĻ“, āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ JavaScript āĻ•ā§‹āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

React First Component āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

React-āĻ First Component āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ†āĻŽāĻ°āĻž React āĻœāĻ—āĻ¤ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒ āĻ¨āĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻ‡ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• component āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž React āĻļā§‡āĻ–āĻžāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ•, āĻ•āĻžāĻ°āĻŖ āĻāĻŸāĻŋ component-āĻāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻŽā§‚āĻ˛āĻ• āĻ§āĻžāĻ°āĻŖāĻž, data passing (props), āĻāĻŦāĻ‚ simple rendering āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ§āĻžāĻ°āĻŖāĻž āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ React-āĻāĻ° āĻāĻ•āĻŸāĻŋ Basic Component āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšā§Ÿ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻžāĻ° āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻ›āĻŋāĨ¤

1. Component āĻ•ā§€?

React-āĻ component āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻĢāĻžāĻ‚āĻļāĻ¨ (āĻŦāĻž āĻ•ā§āĻ˛āĻžāĻ¸), āĻ¯āĻž UI-āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ…āĻ‚āĻļ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ Components āĻāĻ•āĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ†āĻ˛āĻžāĻĻāĻž āĻ†āĻ˛āĻžāĻĻāĻž āĻ…āĻ‚āĻļāĻ—ā§āĻ˛ā§‹āĻ•ā§‡ āĻ§āĻ°ā§‡ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡, āĻ¯āĻž āĻ•ā§‹āĻĄ āĻĒā§āĻ¨āĻƒāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤

2. React Functional Component āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž

React-āĻ component āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻĻā§āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ†āĻ›ā§‡: functional component āĻāĻŦāĻ‚ class componentāĨ¤ āĻ¤āĻŦā§‡, āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸āĻŽā§Ÿā§‡ functional components-āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻŦā§‡āĻļāĻŋ āĻœāĻ¨āĻĒā§āĻ°āĻŋā§Ÿ āĻ•āĻžāĻ°āĻŖ āĻāĻ—ā§āĻ˛ā§‹ āĻšāĻžāĻ˛āĻ•āĻž āĻāĻŦāĻ‚ āĻ¸āĻšāĻœāĨ¤ āĻāĻ° āĻ¸āĻžāĻĨā§‡, React Hooks āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ state āĻāĻŦāĻ‚ lifecycle events āĻ¸āĻšāĻœā§‡ handle āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ: First Functional Component

import React from 'react';

function FirstComponent() {
  return (
    <div>
      <h1>Hello, React!</h1>
      <p>This is my first component.</p>
    </div>
  );
}

export default FirstComponent;
Enter fullscreen mode Exit fullscreen mode

3. Component Rendering

React-āĻ components āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ App.js-āĻ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšā§Ÿ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°ā§‹ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻœā§āĻĄāĻŧā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ āĻ¨āĻŋāĻšā§‡āĻ° āĻ•ā§‹āĻĄā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšā§Ÿā§‡āĻ›ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ FirstComponent āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻŽā§‚āĻ˛ component (App.js) āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§ŸāĨ¤

import React from 'react';
import FirstComponent from './FirstComponent';

function App() {
  return (
    <div>
      <FirstComponent />
    </div>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻ¨ FirstComponent āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšā§Ÿā§‡ āĻāĻ•āĻŸāĻŋ div āĻ¸āĻš "Hello, React!" āĻāĻŦāĻ‚ "This is my first component." āĻŽā§‡āĻ¸ā§‡āĻœ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻŦā§‡āĨ¤

4. JSX (JavaScript XML) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ UI āĻ¤ā§ˆāĻ°āĻŋ

React-āĻ component āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻ¸āĻŽā§Ÿ āĻ†āĻŽāĻ°āĻž JSX (JavaScript XML) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŋāĨ¤ JSX āĻšāĻ˛ JavaScript-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ HTML āĻ˛ā§‡āĻ–āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ syntaxāĨ¤ āĻāĻŸāĻŋ React element āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻšā§Ÿ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĢāĻ˛ā§‡ component āĻ—ā§āĻ˛āĻŋ āĻ†āĻ°āĻ“ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ“ āĻĒāĻžāĻ āĻ¯ā§‹āĻ—ā§āĻ¯ āĻšāĻ¯āĻŧāĨ¤

function FirstComponent() {
const greeting = "Welcome to JSX";
  return (
    <div>
      <h1>{greeting}</h1>
      <p>This is a simple JSX example.</p>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

JSX āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ <h1> āĻāĻŦāĻ‚ <p> āĻŸā§āĻ¯āĻžāĻ— āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ component-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ˛ā§‡āĻ–āĻž āĻ¯āĻžā§ŸāĨ¤

5. Props (Properties) āĻĻāĻŋā§Ÿā§‡ Data Passing

React-āĻ props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ component-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ data āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻ¯āĻžā§ŸāĨ¤ Props āĻāĻ• āĻ§āĻ°āĻ¨ā§‡āĻ° object, āĻ¯āĻž parent component āĻĨā§‡āĻ•ā§‡ child component-āĻ data pass āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ: Props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Data Passing

function Greeting(props) {
  return <h1>Hello, {props.name}!</h1>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻ¨, Greeting component-āĻ•ā§‡ name āĻĒā§āĻ°āĻĒāĻ¸ āĻ¸āĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ˛ā§‡ āĻāĻŸāĻŋ āĻ¸ā§‡āĻ‡ name-āĻāĻ° āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻŦā§‡āĨ¤

function App() {
  return (
    <div>
      <Greeting name="Alice" />
      <Greeting name="Bob" />
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡, Greeting component āĻ†āĻ˛āĻžāĻĻāĻž āĻ†āĻ˛āĻžāĻĻāĻž āĻĒā§āĻ°āĻĒāĻ¸ āĻĻāĻŋā§Ÿā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§‡ āĻĒā§āĻ°āĻĨāĻŽāĻŸāĻŋāĻ¤ā§‡ "Hello, Alice!" āĻāĻŦāĻ‚ āĻĻā§āĻŦāĻŋāĻ¤ā§€ā§ŸāĻŸāĻŋāĻ¤ā§‡ "Hello, Bob!" āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤

6. CSS Style āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž

React component-āĻ CSS āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻĒāĻžā§Ÿ āĻ°ā§Ÿā§‡āĻ›ā§‡āĨ¤ Inline styling, CSS āĻ•ā§āĻ˛āĻžāĻ¸, āĻŦāĻž CSS āĻŽāĻĄāĻŋāĻ‰āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ: Inline Style

function StyledComponent() {
  const style = {
    color: 'blue',
    fontSize: '20px',
  };

  return <h2 style={style}>This is a styled component</h2>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡, style object-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ CSS āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛ component-āĻ inlineāĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤

7. Component Composition

React component āĻ—ā§āĻ˛ā§‹ nested āĻŦāĻž āĻ•āĻŽā§āĻĒā§‹āĻœāĻŋāĻļāĻ¨ āĻ†āĻ•āĻžāĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻāĻ• component-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ…āĻ¨ā§āĻ¯ component-āĻ•ā§‡ nested structure āĻ†āĻ•āĻžāĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ: Component Composition

function WelcomeMessage() {
  return <p>Welcome to the React World!</p>;
}

function FirstComponent() {
  return (
    <div>
      <h1>My First Component</h1>
      <WelcomeMessage />
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ FirstComponent-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ WelcomeMessage component-āĻ•ā§‡ āĻ•āĻŽā§āĻĒā§‹āĻœāĻŋāĻļāĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

React-āĻāĻ° First Component āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ•āĻžāĻœ āĻāĻŦāĻ‚ āĻāĻ¤ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻžāĻ°āĻŖāĻž āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻĨāĻžāĻ•ā§‡ āĻ¯ā§‡āĻŽāĻ¨ JSX, props, āĻāĻŦāĻ‚ component compositionāĨ¤ āĻāĻ‡ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻœā§āĻžāĻžāĻ¨ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡, āĻ¯āĻž āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€āĻ¤ā§‡ āĻŦā§œ React āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ āĻšā§ŸāĨ¤

Source:- https://react.dev/learn/your-first-component

Importing and Exporting Components āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

React-āĻ import āĻāĻŦāĻ‚ export āĻŽā§‡āĻ•āĻžāĻ¨āĻŋāĻœāĻŽā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ component āĻāĻ• āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ†āĻ°ā§‡āĻ• āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸāĻ•ā§‡ āĻŽāĻĄāĻŋāĻ‰āĻ˛āĻžāĻ° āĻāĻŦāĻ‚ āĻĒā§āĻ¨āĻƒāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ°āĻžāĻ–ā§‡āĨ¤ React-āĻ import āĻāĻŦāĻ‚ export āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ•ā§ŒāĻļāĻ˛ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ˛āĨ¤

1. Exporting Components

React-āĻ component-āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ export āĻ•āĻ°āĻžāĻ° āĻĻā§āĻŸāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ†āĻ›ā§‡:

  • Named Export
  • Default Export

React-āĻ import āĻāĻŦāĻ‚ export āĻŽā§‡āĻ•āĻžāĻ¨āĻŋāĻœāĻŽā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ component āĻāĻ• āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ†āĻ°ā§‡āĻ• āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸāĻ•ā§‡ āĻŽāĻĄāĻŋāĻ‰āĻ˛āĻžāĻ° āĻāĻŦāĻ‚ āĻĒā§āĻ¨āĻƒāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ°āĻžāĻ–ā§‡āĨ¤ React-āĻ import āĻāĻŦāĻ‚ export āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ•ā§ŒāĻļāĻ˛ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ˛āĨ¤

1. Exporting Components

React-āĻ component-āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ export āĻ•āĻ°āĻžāĻ° āĻĻā§āĻŸāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ†āĻ›ā§‡:

  • Named Export
  • Default Export

(i) Named Export

Named export āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• component export āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ export āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ component-āĻāĻ° āĻ¨āĻžāĻŽ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ import āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§ŸāĻ“ āĻ¸ā§‡āĻ‡ āĻ¨āĻžāĻŽ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

// File: MyComponents.js
import React from 'react';

export function Header() {
  return <h1>This is the Header</h1>;
}

export function Footer() {
  return <p>This is the Footer</p>;
}

Enter fullscreen mode Exit fullscreen mode

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ Header āĻāĻŦāĻ‚ Footer āĻ¨āĻžāĻŽā§‡ āĻĻā§āĻŸāĻŋ component named export āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤ āĻāĻ—ā§āĻ˛ā§‹ import āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§Ÿ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ component-āĻāĻ° āĻ¨āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

// File: App.js
import React from 'react';
import { Header, Footer } from './MyComponents';

function App() {
  return (
    <div>
      <Header />
      <Footer />
    </div>
  );
}

export default App;

Enter fullscreen mode Exit fullscreen mode

āĻ¨ā§‹āĻŸ: āĻ¨ā§‡āĻŽāĻĄ āĻāĻ•ā§āĻ¸āĻĒā§‹āĻ°ā§āĻŸā§‡āĻ° āĻ¸āĻŽā§Ÿ āĻ‡āĻŽā§āĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•ā§āĻ¸āĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°āĻž āĻ¨āĻžāĻŽāĻ—ā§āĻ˛ā§‹ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻĻā§‡āĻ–āĻž āĻĻā§‡āĻŦā§‡āĨ¤

(ii) Default Export

Default export āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ˛ā§‡ āĻāĻ• āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ component default āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ export āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ import āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§Ÿ component-āĻāĻ° āĻ¨āĻžāĻŽ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ•āĻŋāĻ›ā§ āĻ°āĻžāĻ–āĻž āĻ¯āĻžā§ŸāĨ¤

// File: Header.js
import React from 'react';

export default function Header() {
  return <h1>This is the Header</h1>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻ¨ Header component-āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ā§‹ āĻĢāĻžāĻ‡āĻ˛ā§‡ import āĻ•āĻ°āĻ˛ā§‡ import-āĻāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŸāĻŋ āĻ¯ā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻ¨āĻžāĻŽ āĻĻāĻŋā§Ÿā§‡ āĻĄāĻžāĻ•āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

// File: App.js
import React from 'react';
import Header from './Header';

function App() {
  return (
    <div>
      <Header />
    </div>
  );
}

export default App;

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ Header component āĻ•ā§‡ default āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ export āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻžāĻ‡ import āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤

āĻ¨ā§‹āĻŸ: āĻĄāĻŋāĻĢāĻ˛ā§āĻŸ āĻāĻ•ā§āĻ¸āĻĒā§‹āĻ°ā§āĻŸā§‡āĻ° āĻ¸āĻŽā§Ÿ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¨āĻžāĻŽā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ‡āĻŽā§āĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°āĻž āĻ¨āĻžāĻŽ āĻŽāĻŋāĻ˛ āĻ¨āĻž āĻšāĻ˛ā§‡āĻ“ āĻšāĻ˛ā§‡āĨ¤ import CustomHeader from './Header'; āĻāĻ‡āĻ­āĻžāĻŦā§‡āĻ“ Header āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ‡āĻŽā§āĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦāĨ¤

2. Importing Components

React-āĻ import āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§Ÿ āĻĻā§āĻŸāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¨āĻŋā§ŸāĻŽ āĻĒāĻžāĻ˛āĻ¨ āĻ•āĻ°āĻž āĻšā§Ÿ:

  • Named export-import āĻāĻ° āĻœāĻ¨ā§āĻ¯ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§ŸāĨ¤
  • Default export-import āĻāĻ° āĻœāĻ¨ā§āĻ¯ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§Ÿ āĻ¨āĻžāĨ¤

(i) Named Import

āĻ¯āĻ–āĻ¨ āĻāĻ•āĻžāĻ§āĻŋāĻ• component āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ import āĻ•āĻ°āĻ¤ā§‡ āĻšā§Ÿ, āĻ¤āĻ–āĻ¨ named import āĻŦā§‡āĻļ āĻ‰āĻĒāĻ¯ā§‹āĻ—ā§€āĨ¤ āĻāĻ¤ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• component āĻāĻ•āĻ‡ āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ import āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

// File: App.js
import React from 'react';
import { Header, Footer } from './MyComponents';

function App() {
  return (
    <div>
      <Header />
      <Footer />
    </div>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

(ii) Default Import

Default import āĻāĻ° āĻ¸āĻŽā§Ÿ {} āĻāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšā§Ÿ āĻ¨āĻž, āĻāĻŦāĻ‚ component āĻāĻ° āĻ¨āĻžāĻŽ āĻ¨āĻŋāĻœā§‡āĻ° āĻŽāĻ¤ā§‹ āĻĻā§‡ā§ŸāĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

// File: App.js
import React from 'react';
import Header from './Header';

function App() {
  return (
    <div>
      <Header />
    </div>
  );
}

export default App;

Enter fullscreen mode Exit fullscreen mode

3. Named āĻāĻŦāĻ‚ Default Export āĻāĻ•āĻ¸āĻžāĻĨā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

āĻāĻ•āĻ‡ āĻĢāĻžāĻ‡āĻ˛ā§‡ default export āĻāĻŦāĻ‚ named export āĻāĻ•āĻ¸āĻžāĻĨā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ āĻāĻŸāĻŋ āĻ•ā§‹āĻ¨ā§‹ component āĻ•ā§‡ default āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ export āĻ•āĻ°ā§‡ āĻ…āĻ¨ā§āĻ¯ component-āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ named export āĻ•āĻ°ā§‡āĨ¤

// File: MyComponents.js
import React from 'react';

export function Footer() {
  return <p>This is the Footer</p>;
}

function Header() {
  return <h1>This is the Header</h1>;
}

export default Header;

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻ¨ āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ Header āĻ•ā§‡ default import āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻāĻŦāĻ‚ Footer āĻ•ā§‡ named import āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ import āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡āĨ¤

// File: App.js
import React from 'react';
import Header, { Footer } from './MyComponents';

function App() {
  return (
    <div>
      <Header />
      <Footer />
    </div>
  );
}

export default App;

Enter fullscreen mode Exit fullscreen mode

4. Alias āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Import

Alias āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ˛ā§‡ import āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ component-āĻāĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ named import āĻāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻŦā§‡āĻļāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€āĨ¤

// File: MyComponents.js
import React from 'react';

export function Header() {
  return <h1>This is the Header</h1>;
}

export function Footer() {
  return <p>This is the Footer</p>;
}
Enter fullscreen mode Exit fullscreen mode
// File: App.js
import React from 'react';
import { Header as MainHeader, Footer as MainFooter } from './MyComponents';

function App() {
  return (
    <div>
      <MainHeader />
      <MainFooter />
    </div>
  );
}

export default App;
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ Header āĻāĻŦāĻ‚ Footer āĻ•ā§‡ MainHeader āĻāĻŦāĻ‚ MainFooter āĻ¨āĻžāĻŽā§‡ import āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤

āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻ¨ā§‹ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ¨ā§‡āĻŽāĻĄ āĻāĻ•ā§āĻ¸āĻĒā§‹āĻ°ā§āĻŸ āĻĨāĻžāĻ•ā§‡ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹āĻ° āĻ¸āĻŦāĻ—ā§āĻ˛ā§‹āĻ‡ āĻĻāĻ°āĻ•āĻžāĻ° āĻšā§Ÿ, āĻ¤āĻžāĻšāĻ˛ā§‡ * as āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ“ā§ŸāĻžāĻ‡āĻ˛ā§āĻĄāĻ•āĻžāĻ°ā§āĻĄ āĻ‡āĻŽā§āĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

5. āĻĒā§āĻ°āĻšāĻ˛āĻŋāĻ¤ āĻ­ā§āĻ˛ āĻāĻŦāĻ‚ āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž

  • āĻ¯āĻĻāĻŋ named export āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻŦā§‡ import āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤
  • Default export-āĻāĻ° āĻœāĻ¨ā§āĻ¯ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤
  • āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• component āĻĨāĻžāĻ•āĻ˛ā§‡ named export āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•āĨ¤
  • Import path āĻ­ā§āĻ˛ āĻšāĻ˛ā§‡ component āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻž, āĻ¤āĻžāĻ‡ path āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¨ā§‡ā§ŸāĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

React-āĻ import āĻāĻŦāĻ‚ export āĻŽā§‡āĻ•āĻžāĻ¨āĻŋāĻœāĻŽā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ component āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ āĻŽāĻĄāĻŋāĻ‰āĻ˛āĻžāĻ°āĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ Named export āĻāĻŦāĻ‚ default export āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• component export āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻāĻŦāĻ‚ āĻāĻ—ā§āĻ˛ā§‹ āĻ…āĻ¨ā§āĻ¯ āĻĢāĻžāĻ‡āĻ˛ā§‡ import āĻ•āĻ°ā§‡ āĻ•ā§‹āĻĄāĻ•ā§‡ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ“ āĻŽāĻĄā§āĻ˛āĻžāĻ° āĻ°āĻžāĻ–āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

Source:- https://react.dev/learn/importing-and-exporting-components

Writing Markup with JSX āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

JSX (JavaScript XML) āĻšāĻ˛ React-āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ syntax āĻ¯āĻž JavaScript āĻ•ā§‹āĻĄā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ HTML-like āĻ•ā§‹āĻĄ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸ā§āĻ¯ā§‹āĻ— āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ React component āĻ¤ā§ˆāĻ°āĻŋāĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻšā§Ÿ āĻāĻŦāĻ‚ UI āĻ—āĻ āĻ¨āĻ•ā§‡ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ JSX-āĻāĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻŦāĻ‚ āĻ¨āĻŋā§ŸāĻŽāĻžāĻŦāĻ˛ā§€ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻ›āĻŋāĨ¤

1. JSX āĻ•ā§€?

JSX āĻšāĻ˛ āĻāĻ• āĻ§āĻ°āĻ¨ā§‡āĻ° syntax extension āĻ¯āĻž JavaScript-āĻ HTML āĻ˛ā§‡āĻ–āĻž āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ HTML āĻāĻ° āĻŽāĻ¤ā§‹ āĻšāĻ˛ā§‡āĻ“ āĻāĻŸāĻŋ āĻ†āĻ¸āĻ˛ā§‡ JavaScriptāĨ¤ React-āĻ JSX āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ˛ā§‡ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ° āĻ¨āĻŋāĻœā§‡ āĻ¨āĻŋāĻœā§‡ JavaScript-āĻ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ Virtual DOM āĻ render āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

const element = <h1>Hello, World!</h1>;
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ <h1>Hello, World!</h1> JSX āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ, āĻ¯āĻž element āĻ¨āĻžāĻŽāĻ• āĻāĻ•āĻŸāĻŋ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛āĻ•ā§‡ h1 HTML āĻŸā§āĻ¯āĻžāĻ— āĻ¸āĻš āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤

JSX āĻāĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯:

  • HTML āĻ“ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻāĻ•āĻ¤ā§āĻ°ā§‡ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
  • āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ { } āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤
  • āĻ¸āĻŋāĻŽā§āĻĒāĻ˛ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸āĨ¤

2. JSX āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž

  • Readable Syntax: JavaScript āĻāĻ° āĻ­ā§‡āĻ¤āĻ°ā§‡ HTML āĻāĻ° āĻŽāĻ¤ā§‹ structure āĻ˛ā§‡āĻ–āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻž āĻ•ā§‹āĻĄāĻ•ā§‡ āĻ†āĻ°āĻ“ āĻĒāĻžāĻ āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤
  • React Component Creation āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡: āĻāĻŸāĻŋ component āĻ¤ā§ˆāĻ°āĻŋāĻ¤ā§‡ āĻ¸āĻšāĻœāĻ¤āĻž āĻ†āĻ¨ā§‡ āĻāĻŦāĻ‚ UI āĻ—āĻ āĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ†āĻ°āĻ“ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤ āĻ•āĻ°ā§‡āĨ¤
  • JavaScript Expressions āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ: JSX āĻ JavaScript expressions {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ, āĻ¯āĻž component āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ dynamic āĻ•āĻ°ā§‡āĨ¤

3. JSX-āĻāĻ° Regular Syntax Rules

JSX āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻ•āĻŋāĻ›ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšā§Ÿ, āĻ•āĻžāĻ°āĻŖ āĻāĻŸāĻŋ HTML āĻāĻ° āĻŽāĻ¤ā§‹ āĻšāĻ˛ā§‡āĻ“ āĻ†āĻ¸āĻ˛ā§‡ JavaScript āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻļā§āĻ°āĻŋāĻ¤āĨ¤

(i) Parent Element āĻĨāĻžāĻ•āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•

JSX āĻ āĻāĻ•āĻŸāĻŋ component āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• element āĻĨāĻžāĻ•āĻ˛ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•āĻŸāĻŋ parent element-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ°āĻžāĻ–āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤

function MyComponent() {
  return (
    <div>
      <h1>Hello, React!</h1>
      <p>This is JSX syntax.</p>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ <div> parent element āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž h1 āĻāĻŦāĻ‚ p āĻŸā§āĻ¯āĻžāĻ—āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ›ā§‡āĨ¤

(ii) Self-Closing Tags

JSX-āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ HTML tag āĻ¯āĻž āĻ•ā§‹āĻ¨ content āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ self-closing āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¯ā§‡āĻŽāĻ¨ <img />, <input />, <br />āĨ¤

function ImageComponent() {
  return <img src="image.jpg" alt="Example" />;
}
Enter fullscreen mode Exit fullscreen mode

(iii) JavaScript Expressions āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°

JSX āĻ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ JavaScript expressions āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‹āĻ¨ āĻ­ā§‡āĻ°āĻŋā§Ÿā§‡āĻŦāĻ˛, āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨, āĻŦāĻž āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ JSX āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

function Greeting() {
  const name = "Alice";
  return <h1>Hello, {name}!</h1>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ {name} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ JavaScript variable name āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡, āĻ¯āĻž output āĻ "Hello, Alice!" āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤

4. JSX āĻ Style āĻāĻŦāĻ‚ CSS āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž

React-āĻ inline style āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ—ā§‡āĻ˛ā§‡ CSS āĻāĻ° āĻŽāĻ¤ā§‹āĻ‡ style attribute āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ object āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ CSS āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ className attribute āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

(i) Inline Style

function StyledComponent() {
  const headingStyle = {
    color: "blue",
    fontSize: "20px",
  };

  return <h1 style={headingStyle}>Styled Heading</h1>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ headingStyle āĻāĻ•āĻŸāĻŋ object āĻšāĻŋāĻ¸āĻžāĻŦā§‡ style attribute āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

(ii) className āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°

function ClassComponent() {
  return <div className="my-class">This is a div with a class</div>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ className attribute āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ my-class CSS āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤ HTML āĻ class attribute āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§Ÿ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ JSX āĻ āĻāĻŸāĻŋ className āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§ŸāĨ¤

5. JavaScript Expressions āĻāĻŦāĻ‚ Statements

JSX āĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° expressions {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, statements (āĻ¯ā§‡āĻŽāĻ¨ loops, conditionals) āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤

(i) Ternary Operator

function UserGreeting(props) {
  return <h1>{props.isLoggedIn ? "Welcome Back!" : "Please Sign In"}</h1>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ ternary operator āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ isLoggedIn āĻāĻ° āĻŽāĻžāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ greeting āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤

(ii) Map āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Loop āĻ•āĻ°āĻž

JSX āĻ map() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ˛āĻŋāĻ¸ā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ element render āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

function ItemList() {
  const items = ["Item 1", "Item 2", "Item 3"];

  return (
    <ul>
      {items.map((item, index) => (
        <li key={index}>{item}</li>
      ))}
    </ul>
  );
}
Enter fullscreen mode Exit fullscreen mode

6. Fragments āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°

React āĻ multiple elements āĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ Fragment (<> </>) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻžāĻ¤ā§‡ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ HTML tag āĻ¯ā§āĻ•ā§āĻ¤ āĻ¨āĻž āĻšā§ŸāĨ¤

function FragmentComponent() {
  return (
    <>
      <h1>Title</h1>
      <p>Description</p>
    </>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ <></> fragment āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ render āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ DOM-āĻ āĻ•ā§‹āĻ¨āĻ“ extra div āĻ¯ā§‹āĻ— āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤

7. JSX āĻ•ā§‹āĻĄāĻ•ā§‡ JavaScript āĻ•ā§‹āĻĄā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž

JSX āĻ•ā§‹āĻĄ āĻ†āĻ¸āĻ˛ā§‡ JavaScript āĻ compile āĻšā§Ÿā§‡ āĻ¯āĻžā§ŸāĨ¤ React-āĻāĻ° Babel compiler JSX āĻ•ā§‹āĻĄāĻ•ā§‡ JavaScript āĻ•ā§‹āĻĄā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡, āĻ¯āĻž Virtual DOM āĻ render āĻšā§ŸāĨ¤ āĻ¯ā§‡āĻŽāĻ¨,

const element = <h1>Hello, World!</h1>;
Enter fullscreen mode Exit fullscreen mode

āĻāĻŸāĻŋ JavaScript āĻ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ˛ā§‡ āĻāĻŽāĻ¨ āĻšā§Ÿ:

const element = React.createElement("h1", null, "Hello, World!");
Enter fullscreen mode Exit fullscreen mode

8. JSX āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ‚ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž

  • āĻ¸ā§āĻŦāĻŋāĻ§āĻž:
    • JavaScript āĻāĻ° āĻ¸āĻžāĻĨā§‡ HTML structure āĻŽāĻŋāĻļāĻŋā§Ÿā§‡ component āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¸āĻšāĻœ āĻšā§ŸāĨ¤
    • UI āĻ—āĻ āĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻšā§āĻ›āĻ¨ā§āĻ¨ āĻ•ā§‹āĻĄ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤
    • JavaScript āĻāĻ° āĻ¸āĻ•āĻ˛ āĻ•ā§āĻˇāĻŽāĻ¤āĻž JSX āĻ āĻĒāĻžāĻ“ā§ŸāĻž āĻ¯āĻžā§Ÿ, āĻ¤āĻžāĻ‡ dynamic UI āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¸āĻšāĻœāĨ¤
  • āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž:
    • āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ statements (āĻ¯ā§‡āĻŽāĻ¨ loops, if-else) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ āĻ¨āĻžāĨ¤
    • āĻ¸āĻŦ āĻ¸āĻŽā§Ÿ parent element āĻĨāĻžāĻ•āĻž āĻ†āĻŦāĻļā§āĻ¯āĻ•, āĻ¯āĻĻāĻŋāĻ“ āĻāĻŸāĻŋ āĻĢā§āĻ°ā§āĻ¯āĻžāĻ—āĻŽā§‡āĻ¨ā§āĻŸ āĻĻāĻŋā§Ÿā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ¯ā§‹āĻ—ā§āĻ¯āĨ¤

💡

  1. JSX āĻ HTML āĻāĻ° āĻŽāĻ¤ā§‹ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§Ÿ āĻ¯āĻž āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡āĻ° āĻ­ā§‡āĻ¤āĻ°ā§‡ āĻ˛ā§‡āĻ–āĻž āĻšā§ŸāĨ¤
  2. { } āĻšāĻŋāĻšā§āĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤
  3. className āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ CSS āĻ•ā§āĻ˛āĻžāĻ¸ āĻ…ā§āĻ¯āĻžāĻ¸āĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšā§ŸāĨ¤
  4. āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ style āĻ…ā§āĻ¯āĻžāĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻŸā§‡āĻ° āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšā§ŸāĨ¤
  5. āĻĢā§āĻ°ā§āĻ¯āĻžāĻ—āĻŽā§‡āĻ¨ā§āĻŸ, āĻ˛āĻŋāĻ¸ā§āĻŸ āĻāĻŦāĻ‚ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ JSX āĻ•ā§‡ āĻ†āĻ°ā§‹ āĻĒāĻžāĻ“ā§ŸāĻžāĻ°āĻĢā§āĻ˛ āĻāĻŦāĻ‚ āĻĢā§āĻ˛ā§‡āĻ•ā§āĻ¸āĻŋāĻŦāĻ˛ āĻ•āĻ°ā§‡āĨ¤

JSX āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ HTML āĻāĻ° āĻŽāĻ¤ā§‹ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡ UI āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ, āĻ¯āĻž āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻŽā§‡āĻ¨ā§āĻŸ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§‡ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ‚ āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

JSX āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ React-āĻ component āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°āĨ¤ āĻāĻŸāĻŋ HTML āĻāĻŦāĻ‚ JavaScript āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡ dynamic āĻāĻŦāĻ‚ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° UI āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻ¸ā§āĻ¯ā§‹āĻ— āĻĻā§‡āĻ¯āĻŧāĨ¤ JSX āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ JavaScript expressions āĻāĻŦāĻ‚ HTML-like syntax āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ, āĻ¯āĻž React component āĻ¤ā§ˆāĻ°āĻŋāĻ•ā§‡ āĻ¸āĻšāĻœ āĻ“ āĻĻā§āĻ°ā§āĻ¤āĻ¤āĻ° āĻ•āĻ°ā§‡āĨ¤ JSX āĻāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻŽā§‡āĻ¨ā§‡ āĻšāĻ˛āĻ˛ā§‡ React āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻ°āĻ“ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ¯āĻŧāĨ¤

Source:- https://react.dev/learn/writing-markup-with-jsx

JavaScript in JSX with Curly Braces āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

JSX-āĻ JavaScript expressions āĻ˛āĻŋāĻ–āĻ¤ā§‡ curly braces {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ React āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ¯āĻž component-āĻ dynamic content āĻāĻŦāĻ‚ JavaScript logic āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤ JSX with curly braces āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ†āĻŽāĻ°āĻž variables, functions, expressions, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ JavaScript operations āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ JSX āĻ•ā§‹āĻĄā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ JSX āĻ JavaScript āĻ•ā§‹āĻĄ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ āĻ¤āĻžāĻ° āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ˛āĨ¤

1. Curly Braces {} āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

JSX-āĻ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ JavaScript expressions āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ HTML-like structure āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ JavaScript āĻāĻ° āĻ­ā§‡āĻ¤āĻ°ā§‡ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ°āĻžāĻ–āĻž āĻ¯ā§‡ āĻ•ā§‹āĻ¨ā§‹ expression āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšā§Ÿ āĻāĻŦāĻ‚ HTML DOM-āĻ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Greeting() {
  const name = "Alice";
  return <h1>Hello, {name}!</h1>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ {name} āĻāĻ° āĻ­ā§‡āĻ¤āĻ°ā§‡ name āĻ¨āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ variable āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ "Alice"āĨ¤ āĻĢāĻ˛ā§‡ āĻāĻŸāĻŋ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻ˛ā§‡ "Hello, Alice!" āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤

2. JavaScript Expressions vs. Statements

JSX āĻ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° JavaScript expressions āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ, statements āĻ¨ā§ŸāĨ¤

  • Expressions: āĻ¯ā§‡āĻŽāĻ¨ a + b, name, isLoggedIn ? "Welcome" : "Please Login"
  • Statements: āĻ¯ā§‡āĻŽāĻ¨ if, for, while

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Sum() {
  const a = 5;
  const b = 10;
  return <p>Sum: {a + b}</p>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ {a + b} āĻāĻ•āĻŸāĻŋ expression, āĻ¯āĻž āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻ˛ā§‡ "Sum: 15" āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤

3. Variables āĻ“ Object Properties āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°

JSX āĻ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ JavaScript variables, object properties, āĻāĻŦāĻ‚ array elements āĻ¸āĻšāĻœā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function UserInfo() {
  const user = {
    name: "Alice",
    age: 25
  };

  return (
    <div>
      <h2>Name: {user.name}</h2>
      <p>Age: {user.age}</p>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ user.name āĻāĻŦāĻ‚ user.age āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ user object-āĻāĻ° property āĻ—ā§āĻ˛ā§‹ JSX āĻ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšā§Ÿā§‡āĻ›ā§‡āĨ¤

4. Function Call āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°

JSX āĻ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ JavaScript āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯ā§‡āĻŽāĻ¨ data format āĻ•āĻ°āĻž, āĻŦāĻž calculation āĻ•āĻ°āĻžāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function formatDate(date) {
  return date.toLocaleDateString();
}

function CurrentDate() {
  const today = new Date();
  return <p>Today's Date: {formatDate(today)}</p>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ formatDate(today) āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ¤āĻžāĻ° āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨āĻ•ā§ƒāĻ¤ āĻŽāĻžāĻ¨āĻŸāĻŋ JSX āĻ āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤

5. Ternary Operator āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Conditional Rendering

JSX āĻ if āĻ¸ā§āĻŸā§‡āĻŸāĻŽā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¤āĻžāĻ‡ āĻļāĻ°ā§āĻ¤ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ content āĻĻā§‡āĻ–āĻžāĻ¤ā§‡ ternary operator (condition ? true_value : false_value) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function UserGreeting(props) {
  return <h1>{props.isLoggedIn ? "Welcome back!" : "Please sign up."}</h1>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isLoggedIn āĻāĻ° āĻŽāĻžāĻ¨ true āĻšāĻ˛ā§‡ "Welcome back!" āĻĻā§‡āĻ–āĻžāĻŦā§‡, āĻ†āĻ° false āĻšāĻ˛ā§‡ "Please sign up." āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤

6. Logical AND (&&) Operator āĻĻāĻŋā§Ÿā§‡ Conditional Rendering

āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ†āĻŽāĻ°āĻž && āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°āĻ“ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¯āĻĻāĻŋ āĻļāĻ°ā§āĻ¤āĻŸāĻŋ true āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻāĻ° āĻĒāĻ°ā§‡āĻ° JSX āĻ•ā§‹āĻĄāĻŸāĻŋ render āĻšāĻŦā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Notification(props) {
  return (
    <div>
      <h1>Notifications</h1>
      {props.hasNotifications && <p>You have new notifications!</p>}
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡, hasNotifications āĻāĻ° āĻŽāĻžāĻ¨ true āĻšāĻ˛ā§‡ "You have new notifications!" āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻŸāĻŋ āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤

7. Array āĻāĻ° Elements Map āĻ•āĻ°ā§‡ Render āĻ•āĻ°āĻž

Array āĻāĻ° elements āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻ¤ā§‡ map() āĻŽā§‡āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ element āĻāĻ° āĻœāĻ¨ā§āĻ¯ JSX āĻ•ā§‹āĻĄ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function ItemList() {
  const items = ["Apple", "Banana", "Cherry"];

  return (
    <ul>
      {items.map((item, index) => (
        <li key={index}>{item}</li>
      ))}
    </ul>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ items array-āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ item {item} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§Ÿā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ map() āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ item <li> āĻŸā§āĻ¯āĻžāĻ—ā§‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

8. Inline Styling {} āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ CSS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°

JSX āĻ inline style āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛ āĻ—ā§āĻ˛ā§‹ object āĻ†āĻ•āĻžāĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšā§ŸāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function StyledText() {
  const style = {
    color: "blue",
    fontSize: "20px"
  };

  return <p style={style}>This is styled text.</p>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ style object {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšā§Ÿā§‡āĻ›ā§‡, āĻ¯āĻž inline styling āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻšāĻšā§āĻ›ā§‡āĨ¤

9. Curly Braces āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ JavaScript Expressions-āĻāĻ° āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž

JSX āĻ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° expressions āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, statements āĻ¨ā§ŸāĨ¤ āĻ¯ā§‡āĻŽāĻ¨, loop āĻāĻŦāĻ‚ conditionals āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ āĻ¨āĻžāĨ¤

āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨:

Loops āĻŦāĻž conditionals handle āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ JavaScript āĻāĻ° function āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ‡ logic āĻ˛āĻŋāĻ–ā§‡ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ•ā§‡ JSX āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ call āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

10. Curly Braces-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ Expressions āĻāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ¸āĻŽā§‚āĻš

function Example() {
  const name = "Alice";
  const age = 25;
  const items = ["React", "JavaScript", "HTML"];

  return (
    <div>
      <h1>Hello, {name}</h1> {/* Variable */}
      <p>Age: {age}</p> {/* Variable */}
      <p>Double Age: {age * 2}</p> {/* Expression */}
      <p>Random Number: {Math.random()}</p> {/* Function Call */}
      <p>{age > 18 ? "Adult" : "Minor"}</p> {/* Ternary Operator */}
      <ul>
        {items.map((item, index) => (
          <li key={index}>{item}</li> {/* Array Mapping */}
        ))}
      </ul>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

{ } āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¯ā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻ˛ā§‡āĻ–āĻž āĻ¯āĻžā§ŸāĨ¤

{ } āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ­ā§‡āĻ°āĻŋā§Ÿā§‡āĻŦāĻ˛, āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛, āĻŸā§‡āĻ°āĻ¨āĻžāĻ°āĻŋ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ°, āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻŽā§‡āĻĨāĻĄ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻŸāĻŋ āĻāĻŦāĻ‚ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ { } āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

āĻļāĻ°ā§āĻ¤ āĻ¸āĻžāĻĒā§‡āĻ•ā§āĻˇā§‡ āĻ­āĻŋāĻœā§āĻ¯ā§ā§ŸāĻžāĻ˛ āĻāĻ˛āĻŋāĻŽā§‡āĻ¨ā§āĻŸ āĻšāĻžāĻ‡āĻĄ āĻŦāĻž āĻļā§‹ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ && āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

āĻ•āĻžāĻ°ā§āĻ˛āĻŋ āĻŦā§āĻ°ā§‡āĻ¸ā§‡āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° React āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻāĻ•ā§āĻ¸āĻĒā§āĻ°ā§‡āĻļāĻ¨ āĻ‡āĻ¨āĻœā§‡āĻ•ā§āĻŸ āĻ•āĻ°ā§‡ UI āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻĄāĻžāĻ¯āĻŧāĻ¨āĻžāĻŽāĻŋāĻ• āĻ“ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°ā§‡āĻ•āĻŸāĻŋāĻ­ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤

āĻāĻ—ā§āĻ˛ā§‹ JSX āĻ { } āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĻāĻŋāĻ• āĻ¯āĻž React āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĄāĻžāĻ¯āĻŧāĻ¨āĻžāĻŽāĻŋāĻ• UI āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ•āĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

JSX āĻ curly braces {} āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ JavaScript expressions āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ React component-āĻ•ā§‡ dynamic āĻāĻŦāĻ‚ interactive āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤ {} āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ variables, object properties, functions, ternary operators, āĻāĻŦāĻ‚ inline styles āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ complex UI āĻ—āĻ āĻ¨ āĻ¸āĻšāĻœ āĻšā§Ÿā§‡ āĻ¯āĻžā§ŸāĨ¤ JSX āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ JavaScript expressions āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° code structure āĻ¸āĻšāĻœ āĻ“ āĻĻā§āĻ°ā§āĻ¤āĻ¤āĻ° āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤

Source:- https://react.dev/learn/javascript-in-jsx-with-curly-braces

Passing Props to a Component āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

React āĻ component āĻ—ā§āĻ˛ā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ data āĻ†āĻĻāĻžāĻ¨-āĻĒā§āĻ°āĻĻāĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ Props (properties) āĻšāĻ˛ āĻāĻ• āĻ§āĻ°āĻ¨ā§‡āĻ° JavaScript object, āĻ¯āĻž parent component āĻĨā§‡āĻ•ā§‡ child component-āĻ values āĻĒāĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ Props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ component āĻ—ā§āĻ˛ā§‹ āĻ†āĻ°ā§‹ dynamic āĻāĻŦāĻ‚ reusable āĻšāĻ¯āĻŧ, āĻ•āĻžāĻ°āĻŖ āĻāĻ•āĻ‡ component āĻ•ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ values āĻĻāĻŋāĻ¯āĻŧā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ output āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

āĻāĻ–āĻžāĻ¨ā§‡ React āĻ props āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°, āĻ•ā§€āĻ­āĻžāĻŦā§‡ props āĻĒāĻžāĻ¸ āĻāĻŦāĻ‚ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ data handle āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ˛āĨ¤

1. Props āĻ•ā§€?

Props āĻšāĻ˛ āĻāĻ• āĻ§āĻ°āĻ¨ā§‡āĻ° object āĻ¯āĻž parent component āĻĨā§‡āĻ•ā§‡ child component-āĻ data āĻĒāĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ Props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ component āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ āĻ†āĻ°āĻ“ dynamic āĻāĻŦāĻ‚ flexible āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ•āĻžāĻ°āĻŖ props values āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ˛ā§‡ component āĻāĻ° output āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

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

āĻāĻ–āĻžāĻ¨ā§‡ Welcome āĻ¨āĻžāĻŽāĻ• component-āĻŸāĻŋ props āĻ¨āĻžāĻŽāĻ• object āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ name āĻ¨āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ value display āĻ•āĻ°āĻ›ā§‡āĨ¤

2. Props āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ?

Props āĻĒāĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ parent component-āĻ child component-āĻ•ā§‡ HTML attribute āĻāĻ° āĻŽāĻ¤ā§‹ āĻ•āĻ°ā§‡ value assign āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function App() {
  return <Welcome name="Alice" />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ Welcome component-āĻ name attribute āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ "Alice" āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ Welcome component-āĻŸāĻŋ name value āĻ•ā§‡ props āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻŦā§‡āĨ¤

3. Props āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ?

Child component-āĻ function parameter āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ props object āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ°āĻĒāĻ° props.propertyName āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ value access āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

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

āĻāĻ–āĻžāĻ¨ā§‡ props object-āĻāĻ° name property {props.name} āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ access āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ output āĻ "Hello, Alice!" āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻŦā§‡āĨ¤

4. Multiple Props āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž

āĻāĻ•āĻžāĻ§āĻŋāĻ• props attribute āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ child component-āĻ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹ props object-āĻāĻ° āĻ­ā§‡āĻ¤āĻ°ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ†āĻ˛āĻžāĻĻāĻž property āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function User(props) {
  return (
    <div>
      <h1>Name: {props.name}</h1>
      <p>Age: {props.age}</p>
      <p>Location: {props.location}</p>
    </div>
  );
}

function App() {
  return <User name="Alice" age={25} location="New York" />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ User component-āĻ name, age, āĻāĻŦāĻ‚ location āĻ¨āĻžāĻŽā§‡ āĻ¤āĻŋāĻ¨āĻŸāĻŋ props āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ props-āĻ•ā§‡ {props.propertyName} āĻĻāĻŋāĻ¯āĻŧā§‡ display āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

5. Destructuring Props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

Props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ†āĻ°āĻ“ āĻ¸āĻšāĻœ āĻ•āĻ°āĻ¤ā§‡ destructuring āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻžāĻ¤ā§‡ props.propertyName āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ property āĻ¨āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function User({ name, age, location }) {
  return (
    <div>
      <h1>Name: {name}</h1>
      <p>Age: {age}</p>
      <p>Location: {location}</p>
    </div>
  );
}

function App() {
  return <User name="Alice" age={25} location="New York" />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ User component āĻ { name, age, location } āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ destructuring āĻ•āĻ°ā§‡ props āĻ—ā§āĻ˛ā§‹ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

6. Props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ Function āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž

Props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° data āĻ¨āĻ¯āĻŧ, function āĻ“ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ component āĻ—ā§āĻ˛ā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ event handling āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Button(props) {
  return <button onClick={props.handleClick}>Click Me</button>;
}

function App() {
  const showMessage = () => {
    alert("Button Clicked!");
  };

  return <Button handleClick={showMessage} />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ Button component-āĻ handleClick āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ function props āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž button-āĻŸāĻŋ āĻ•ā§āĻ˛āĻŋāĻ• āĻ•āĻ°āĻ˛ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡āĨ¤

7. Default Props āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž

āĻ•ā§‹āĻ¨ā§‹ props parent component āĻĨā§‡āĻ•ā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻ¨āĻž āĻšāĻ˛ā§‡ default props āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻž React āĻ component āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ default value āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Welcome({ name = "Guest" }) {
  return <h1>Hello, {name}!</h1>;
}

function App() {
  return <Welcome />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ name props āĻĒāĻžāĻ¸ āĻ¨āĻž āĻ•āĻ°āĻ˛ā§‡ default āĻŽāĻžāĻ¨ "Guest" āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤

8. Props Read-Only āĻŦāĻž Immutable

Props āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž āĻŦāĻž āĻ¤āĻžāĻ°āĻž immutableāĨ¤ Child component-āĻ props āĻ•ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ, āĻ•āĻžāĻ°āĻŖ āĻāĻŸāĻŋ component āĻ—ā§āĻ˛ā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ unidirectional data flow āĻ¨ā§€āĻ¤āĻŋāĻ° āĻĒāĻ°āĻŋāĻĒāĻ¨ā§āĻĨā§€āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function User({ name }) {
  name = "Updated Name"; // āĻāĻŸāĻŋ React-āĻāĻ° āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŦāĻŋāĻ°ā§āĻĻā§āĻ§
  return <h1>{name}</h1>;
}
Enter fullscreen mode Exit fullscreen mode

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ name āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ props āĻ—ā§āĻ˛ā§‹ āĻļā§āĻ§ā§ read-only, āĻ¤āĻžāĻ‡ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ React āĻ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤

9. Conditional Rendering āĻāĻ° āĻœāĻ¨ā§āĻ¯ Props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

Props āĻāĻ° āĻŽāĻžāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ component āĻ conditionally render āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Greeting({ isLoggedIn }) {
  return <h1>{isLoggedIn ? "Welcome back!" : "Please sign in."}</h1>;
}

function App() {
  return <Greeting isLoggedIn={true} />;
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isLoggedIn props āĻāĻ° āĻŽāĻžāĻ¨ true āĻšāĻ˛ā§‡ "Welcome back!" āĻāĻŦāĻ‚ false āĻšāĻ˛ā§‡ "Please sign in." āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤

10. Props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ Components Composition

āĻāĻ•āĻŸāĻŋ component āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ…āĻ¨ā§āĻ¯ component āĻ•ā§‡ props āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻž composition pattern āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Profile(props) {
  return (
    <div>
      <h1>{props.user.name}</h1>
      <p>{props.user.bio}</p>
    </div>
  );
}

function App() {
  const user = {
    name: "Alice",
    bio: "Web Developer",
  };

  return <Profile user={user} />;
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ Profile component-āĻ āĻāĻ•āĻŸāĻŋ object user props āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž name āĻāĻŦāĻ‚ bio āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻŸāĻŋ āĻ§āĻ°ā§‡ āĻ°āĻžāĻ–ā§‡āĨ¤

11. Props.children āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°

Props āĻāĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻŸāĻŋ āĻšāĻ˛ props.children, āĻ¯āĻž component-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ content dynamically insert āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Card(props) {
  return <div className="card">{props.children}</div>;
}

function App() {
  return (
    <Card>
      <h1>Title</h1>
      <p>Description inside card.</p>
    </Card>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ Card component āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ children āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ h1 āĻāĻŦāĻ‚ p element āĻĻā§‡āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž props.children āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ render āĻšāĻŦā§‡āĨ¤

12. Props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ āĻžāĻ¨ā§‹

Props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻ¯āĻžā§Ÿ āĻāĻŦāĻ‚ āĻšāĻžāĻ‡āĻ˛ā§āĻĄ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡ āĻāĻĄā§āĻ°ā§‡āĻ¸ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

function App() {
  const user = {
    name: "Alice",
    age: 25,
    location: "New York"
  };

  return <UserCard user={user} />;
}

function UserCard({ user }) {
  return (
    <div>
      <h2>Name: {user.name}</h2>
      <p>Age: {user.age}</p>
      <p>Location: {user.location}</p>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ user āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ UserCard āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ UserCard āĻ¸ā§‡āĻ‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻ—ā§āĻ˛ā§‹ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ›ā§‡āĨ¤

13. Props āĻ­ā§āĻ¯āĻžāĻ˛āĻŋāĻĄā§‡āĻļāĻ¨ (PropsTypes)

React āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡ āĻĒā§āĻ°āĻĒāĻ¸ā§‡āĻ° āĻ§āĻ°āĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻŦāĻ‚ āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ PropTypes āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšā§ŸāĨ¤ āĻāĻŸāĻŋ āĻ•ā§‹āĻĄā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦ āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŦāĻžāĻ— āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‹āĻ§ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻ•āĻ°ā§‡āĨ¤

import PropTypes from 'prop-types';

function UserCard({ name, age }) {
  return (
    <div>
      <h2>Name: {name}</h2>
      <p>Age: {age}</p>
    </div>
  );
}

UserCard.propTypes = {
  name: PropTypes.string.isRequired,
  age: PropTypes.number
};
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ name āĻĒā§āĻ°āĻĒāĻ¸ string āĻšāĻ“āĻ¯āĻŧāĻž āĻŦāĻžāĻ§ā§āĻ¯āĻ¤āĻžāĻŽā§‚āĻ˛āĻ•, āĻāĻŦāĻ‚ age āĻĒā§āĻ°āĻĒāĻ¸āĻŸāĻŋ number āĻ§āĻ°āĻ¨ā§‡āĻ° āĻšāĻ“ā§ŸāĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ PropTypes āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻ āĻŋāĻ• āĻĒā§āĻ°āĻĒāĻ¸ā§‡āĻ° āĻ§āĻ°āĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

Props āĻĒā§āĻ¯āĻžāĻ°ā§‡āĻ¨ā§āĻŸ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻĨā§‡āĻ•ā§‡ āĻšāĻžāĻ‡āĻ˛ā§āĻĄ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡ āĻĄā§‡āĻŸāĻž āĻŦāĻž āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĒāĻžāĻ āĻžāĻ¨ā§‹āĻ° āĻ‰āĻĒāĻžāĻ¯āĻŧāĨ¤

Props āĻ‡āĻŽāĻŋāĻ‰āĻŸā§‡āĻŦāĻ˛, āĻ¯āĻžāĻ° āĻ…āĻ°ā§āĻĨ āĻāĻŸāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ­ā§‡āĻ¤āĻ°ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡ āĻ¨āĻžāĨ¤

Props āĻĄā§‡āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ°āĻŋāĻ‚ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ•ā§‹āĻĄāĻ•ā§‡ āĻ†āĻ°ā§‹ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ•āĨ¤

Props.children āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āĻŸ āĻ‡āĻ¨āĻœā§‡āĻ•ā§āĻŸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

PropTypes āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ props āĻāĻ° āĻ§āĻ°āĻ¨ āĻ¯āĻžāĻšāĻžāĻ‡ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

āĻāĻ‡āĻ¸āĻŦ āĻĢāĻŋāĻšāĻžāĻ° React āĻ props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•ā§‡ āĻ†āĻ°ā§‹ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻ“ āĻ¨āĻŽāĻ¨ā§€āĻ¯āĻŧ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡, āĻ¯āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŽāĻžāĻ¨ā§‡āĻ° UI āĻ—āĻ āĻ¨ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ•āĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

React-āĻ props āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ component āĻ—ā§āĻ˛ā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ data āĻ†āĻĻāĻžāĻ¨-āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž component āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ dynamic, reusable āĻāĻŦāĻ‚ flexible āĻ•āĻ°ā§‡āĨ¤ Props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ data, function, āĻŦāĻž āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ component āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸āĻšāĻœā§‡āĻ‡ conditional rendering āĻāĻŦāĻ‚ composition pattern āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ Props āĻšāĻ˛ React āĻāĻ° āĻāĻ•āĻŽā§āĻ–ā§€ data flow āĻāĻ° āĻŽā§‚āĻ˛ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ, āĻ¯āĻž component āĻ—ā§āĻ˛ā§‹āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ predictable āĻāĻŦāĻ‚ structured data flow āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§‡āĨ¤

Source:- https://react.dev/learn/passing-props-to-a-component

Conditional Rendering āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

React āĻ Conditional Rendering āĻšāĻ˛ā§‹ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻļāĻ°ā§āĻ¤ āĻ¸āĻžāĻĒā§‡āĻ•ā§āĻˇā§‡ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻŦāĻž āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŸāĻŋ JavaScript āĻāĻ° āĻļāĻ°ā§āĻ¤āĻŽā§‚āĻ˛āĻ• āĻ¸ā§āĻŸā§‡āĻŸāĻŽā§‡āĻ¨ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ° (āĻ¯ā§‡āĻŽāĻ¨ if, else, ternary operator) āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¯āĻž UI āĻ•ā§‡ āĻĄāĻžāĻ‡āĻ¨āĻžāĻŽāĻŋāĻ• āĻ“ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°ā§‡āĻ•āĻŸāĻŋāĻ­ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤

React āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ Conditional Rendering āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ if statement, ternary operator, && operator, āĻāĻŦāĻ‚ switch case structureāĨ¤


1. if statement āĻĻāĻŋāĻ¯āĻŧā§‡ Conditional Rendering

if statement āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻļāĻ°ā§āĻ¤ āĻĒā§‚āĻ°āĻŖ āĻšāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻŦāĻž āĻ…āĻ‚āĻļ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

function UserGreeting({ isLoggedIn }) {
  if (isLoggedIn) {
    return <h1>Welcome back!</h1>;
  } else {
    return <h1>Please log in.</h1>;
  }
}

function App() {
  return <UserGreeting isLoggedIn={true} />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isLoggedIn āĻĒā§āĻ°āĻĒāĻ¸āĻŸāĻŋ true āĻšāĻ˛ā§‡ "Welcome back!" āĻāĻŦāĻ‚ false āĻšāĻ˛ā§‡ "Please log in." āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡āĨ¤


2. ternary operator āĻĻāĻŋāĻ¯āĻŧā§‡ Conditional Rendering

JavaScript āĻāĻ° ternary operator (condition ? trueResult : falseResult) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻ°ā§‹ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤āĻ­āĻžāĻŦā§‡ Conditional Rendering āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

function UserGreeting({ isLoggedIn }) {
  return (
    <h1>{isLoggedIn ? "Welcome back!" : "Please log in."}</h1>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isLoggedIn āĻ¯āĻĻāĻŋ true āĻšāĻ¯āĻŧ āĻ¤āĻžāĻšāĻ˛ā§‡ "Welcome back!" āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡, āĻ…āĻ¨ā§āĻ¯āĻĨāĻžā§Ÿ "Please log in." āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡āĨ¤


3. Logical AND (&&) Operator āĻĻāĻŋāĻ¯āĻŧā§‡ Conditional Rendering

&& (logical AND) āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻļāĻ°ā§āĻ¤ āĻĒā§‚āĻ°āĻŖ āĻšāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻ‚āĻļ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻŸāĻŋ āĻ¤āĻ–āĻ¨ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻšāĻ¯āĻŧ, āĻ¯āĻ–āĻ¨ āĻāĻ•āĻŸāĻŋāĻŽāĻžāĻ¤ā§āĻ° āĻļāĻ°ā§āĻ¤ āĻĒā§‚āĻ°āĻŖ āĻšāĻ˛ā§‡ āĻ•āĻŋāĻ›ā§ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

function UserGreeting({ isLoggedIn }) {
  return (
    <div>
      <h1>Welcome to our website!</h1>
      {isLoggedIn && <p>You are logged in.</p>}
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isLoggedIn āĻ¯āĻĻāĻŋ true āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ p āĻŸā§āĻ¯āĻžāĻ—āĻŸāĻŋ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡; āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻāĻŸāĻŋ āĻ¸ā§āĻ•āĻŋāĻĒ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤


4. switch case āĻĻāĻŋāĻ¯āĻŧā§‡ Conditional Rendering

āĻ¯āĻ–āĻ¨ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻļāĻ°ā§āĻ¤ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻ–āĻ¨ switch case āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻ–ā§āĻŦ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

function StatusMessage({ status }) {
  switch (status) {
    case "loading":
      return <p>Loading...</p>;
    case "success":
      return <p>Data loaded successfully!</p>;
    case "error":
      return <p>Error loading data.</p>;
    default:
      return null;
  }
}

function App() {
  return <StatusMessage status="success" />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ status āĻāĻ° āĻŽāĻžāĻ¨ āĻ…āĻ¨ā§āĻ¯āĻžā§Ÿā§€ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡āĨ¤ status āĻ¯āĻĻāĻŋ "loading" āĻšāĻ¯āĻŧ āĻ¤āĻžāĻšāĻ˛ā§‡ "Loading..." āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡, "success" āĻšāĻ˛ā§‡ "Data loaded successfully!" āĻāĻŦāĻ‚ "error" āĻšāĻ˛ā§‡ "Error loading data." āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡āĨ¤


5. Inline Conditional Rendering (Immediate return)

āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ­ā§‡āĻ¤āĻ°ā§‡ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻ‡āĻŽāĻŋāĻĄāĻŋā§Ÿā§‡āĻŸ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻĻāĻŋā§Ÿā§‡ āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

function UserGreeting({ isLoggedIn }) {
  return isLoggedIn ? <h1>Welcome back!</h1> : null;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isLoggedIn true āĻšāĻ˛ā§‡ "Welcome back!" āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡, āĻ†āĻ° false āĻšāĻ˛ā§‡ āĻ•āĻŋāĻ›ā§āĻ‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤


6. āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚

āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄāĻ“ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡ āĻ¸āĻ¤āĻ°ā§āĻ• āĻĨāĻžāĻ•āĻ¤ā§‡ āĻšā§Ÿ āĻ•āĻžāĻ°āĻŖ āĻ–ā§āĻŦ āĻŦā§‡āĻļāĻŋ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻœāĻŸāĻŋāĻ˛ āĻāĻŦāĻ‚ āĻĒā§œāĻ¤ā§‡ āĻ•āĻ āĻŋāĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

function StatusMessage({ isLoggedIn, isAdmin }) {
  if (isLoggedIn) {
    return (
      <div>
        <h1>Welcome back!</h1>
        {isAdmin ? <p>You have admin privileges.</p> : <p>You are a regular user.</p>}
      </div>
    );
  } else {
    return <h1>Please log in.</h1>;
  }
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isLoggedIn āĻāĻŦāĻ‚ isAdmin āĻ‰āĻ­āĻ¯āĻŧ āĻļāĻ°ā§āĻ¤ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻ˛ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻŦā§‡āĨ¤


7. āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¨āĻžāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ—

React āĻ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¨āĻžāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻļāĻ°ā§āĻ¤ā§‡āĻ° āĻ“āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ CSS āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

function Notification({ type, message }) {
  return (
    <div className={`notification ${type === "error" ? "error" : "success"}`}>
      {message}
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ type āĻ¯āĻĻāĻŋ "error" āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ error āĻ•ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻšāĻŦā§‡; āĻ…āĻ¨ā§āĻ¯āĻĨāĻžā§Ÿ success āĻ•ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻšāĻŦā§‡āĨ¤


8. āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ—

āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻ‡āĻ¨āĻ˛āĻžāĻ‡āĻ¨ āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛āĻ“ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻ¯āĻžā§ŸāĨ¤

function AlertBox({ isVisible }) {
  const boxStyle = {
    display: isVisible ? "block" : "none",
    padding: "10px",
    backgroundColor: "yellow",
  };

  return <div style={boxStyle}>This is an alert box!</div>;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isVisible āĻ¯āĻĻāĻŋ true āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ display: block āĻšāĻŦā§‡, āĻ†āĻ° false āĻšāĻ˛ā§‡ display: none āĻšāĻŦā§‡āĨ¤


9. Higher-Order Component (HOC) āĻĻāĻŋā§Ÿā§‡ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚

HOC āĻĻāĻŋā§Ÿā§‡ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻāĻŽāĻ¨ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻšāĻ¯āĻŧ, āĻ¯āĻ–āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻŦāĻŋāĻļā§‡āĻˇ āĻļāĻ°ā§āĻ¤ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

function withAdminPrivileges(Component) {
  return function AdminComponent({ isAdmin, ...props }) {
    if (!isAdmin) return <p>You do not have access.</p>;
    return <Component {...props} />;
  };
}

const AdminPanel = withAdminPrivileges(function Panel() {
  return <div>Welcome to Admin Panel</div>;
});

function App() {
  return <AdminPanel isAdmin={true} />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ isAdmin āĻ¯āĻĻāĻŋ true āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ "You do not have access." āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡; āĻ…āĻ¨ā§āĻ¯āĻĨāĻžā§Ÿ AdminPanel āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻšāĻŦā§‡āĨ¤


10. IIFE (Immediately Invoked Function Expressions) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ Conditional Rendering

āĻ•āĻ–āĻ¨āĻ“ āĻ•āĻ–āĻ¨āĻ“ complex calculations āĻŦāĻž conditions handle āĻ•āĻ°āĻ¤ā§‡ inline function āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ render āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻŸāĻŋ JSX āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ JavaScript logic āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Greeting(props) {
  return (
    <div>
      <h1>Greeting</h1>
      {(() => {
        if (props.time < 12) return <p>Good morning!</p>;
        if (props.time < 18) return <p>Good afternoon!</p>;
        return <p>Good evening!</p>;
      })()}
    </div>
  );
}

function App() {
  return <Greeting time={10} />;
}
Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ time āĻāĻ° āĻŽāĻžāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ Good morning!, Good afternoon!, āĻŦāĻž Good evening! āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤


āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡:

  1. if-else statement : āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻļāĻ°ā§āĻ¤ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤āĨ¤
  2. ternary operator : āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ‡āĻ¨āĻ˛āĻžāĻ‡āĻ¨ āĻļāĻ°ā§āĻ¤ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤āĨ¤
  3. && operator : āĻāĻ•āĻ• āĻļāĻ°ā§āĻ¤ā§‡ āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ–ā§āĻŦāĻ‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ•āĨ¤
  4. switch-case : āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•ā§‡āĻ¸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤
  5. āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛āĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ•ā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— : āĻĄāĻžāĻ‡āĻ¨āĻžāĻŽāĻŋāĻ• āĻ¸āĻŋāĻāĻ¸āĻāĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ—ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ•āĨ¤
  6. Higher-Order Component (HOC) : āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻļāĻ°ā§āĻ¤ āĻ…āĻ¨ā§āĻ¯āĻžā§Ÿā§€ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤āĨ¤

React āĻāĻ° Conditional Rendering āĻ•ā§ŒāĻļāĻ˛āĻ—ā§āĻ˛ā§‹ āĻ†āĻŽāĻžāĻĻā§‡āĻ°āĻ•ā§‡ āĻĄāĻžāĻ‡āĻ¨āĻžāĻŽāĻŋāĻ• UI āĻāĻŦāĻ‚ āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŽāĻžāĻ¨ā§‡āĻ° āĻ‡āĻ‰āĻœāĻžāĻ° āĻāĻ•ā§āĻ¸āĻĒā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻ¸ āĻ¤ā§ˆāĻ°āĻŋāĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ• āĻšāĻ¯āĻŧāĨ¤

Source:- https://react.dev/learn/conditional-rendering

Rendering Lists āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

React āĻ Lists āĻŦāĻž āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž render āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ Array āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ element āĻ•ā§‡ component āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ DOM āĻ render āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ•ā§‹āĻ¨ā§‹ data set-āĻ āĻāĻ•āĻžāĻ§āĻŋāĻ• item āĻĨāĻžāĻ•āĻ˛ā§‡ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•āĻ¸āĻ™ā§āĻ—ā§‡ display āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĻ˛ā§‡ lists rendering āĻāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¯āĻŧāĨ¤ React āĻ lists render āĻ•āĻ°āĻ¤ā§‡ map() āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦā§‡āĻļāĻŋ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ, āĻ¯āĻž array āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ element āĻ•ā§‡ iterate āĻ•āĻ°ā§‡ āĻ¨āĻ¤ā§āĻ¨ component render āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤

React āĻ lists rendering āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ˛ā§‹āĨ¤

1. āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž

React āĻ āĻāĻ•āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻ‡āĻŸā§‡āĻŽ .map() āĻŽā§‡āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

function ListComponent() {
  const items = ["Apple", "Banana", "Cherry"];

  return (
    <ul>
      {items.map((item, index) => (
        <li key={index}>{item}</li>
      ))}
    </ul>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ items āĻ…ā§āĻ¯āĻžāĻ°ā§‡āĻŸāĻŋ .map() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻ‡āĻŸā§‡āĻŽ <li> āĻŸā§āĻ¯āĻžāĻ—ā§‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤ key āĻĒā§āĻ°āĻĒāĻ¸ āĻāĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ <li> āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ‰āĻ¨āĻŋāĻ• āĻ†āĻ‡āĻĄā§‡āĻ¨ā§āĻŸāĻŋāĻĢāĻžāĻ¯āĻŧāĻžāĻ°, āĻ¯āĻž React āĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻ‡āĻŸā§‡āĻŽ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤


2. key āĻĒā§āĻ°āĻĒāĻ¸ āĻāĻ° āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦ

React āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ†āĻ‡āĻŸā§‡āĻŽā§‡ āĻāĻ•āĻŸāĻŋ key āĻĒā§āĻ°āĻĒāĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻāĻŸāĻŋ React āĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ•ā§‹āĻ¨ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤, āĻ¯ā§‹āĻ— āĻŦāĻž āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ React āĻ•ā§‡ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ• āĻšāĻ¯āĻŧāĨ¤ key āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ‰āĻ¨āĻŋāĻ• āĻ†āĻ‡āĻĄāĻŋ āĻŦāĻž āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻ‡āĻŸā§‡āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻŽāĻžāĻ¨ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤

const users = [
  { id: 1, name: "Alice" },
  { id: 2, name: "Bob" },
  { id: 3, name: "Charlie" }
];

function UserList() {
  return (
    <ul>
      {users.map((user) => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ user āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡ id āĻĒā§āĻ°āĻĒāĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ†āĻ‡āĻŸā§‡āĻŽā§‡āĻ° key āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻŸāĻŋ React āĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻ‡āĻŸā§‡āĻŽ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤


3. āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž

React āĻ āĻŦāĻĄāĻŧ āĻ˛āĻŋāĻ¸ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ†āĻ‡āĻŸā§‡āĻŽāĻ—ā§āĻ˛ā§‹ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻ­āĻžāĻ˛ā§‹ āĻĒā§āĻ°ā§āĻ¯āĻžāĻ•āĻŸāĻŋāĻ¸āĨ¤

function User({ name }) {
  return <li>{name}</li>;
}

function UserList() {
  const users = ["Alice", "Bob", "Charlie"];

  return (
    <ul>
      {users.map((user, index) => (
        <User key={index} name={user} />
      ))}
    </ul>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ†āĻ‡āĻŸā§‡āĻŽ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ User āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ“ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚ āĻ†āĻ°ā§‹ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻāĻŦāĻ‚ āĻĒā§āĻ¨āĻƒāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¯ā§‹āĻ—ā§āĻ¯ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤


4. āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž

āĻ¯āĻ–āĻ¨ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻ‡āĻŸā§‡āĻŽ āĻ†āĻŦāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻŦ-āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡, āĻ¤āĻ–āĻ¨ āĻ¨ā§‡āĻ¸ā§āĻŸā§‡āĻĄ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ .map() āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

const items = [
  { id: 1, name: "Fruits", subItems: ["Apple", "Banana", "Cherry"] },
  { id: 2, name: "Vegetables", subItems: ["Carrot", "Peas", "Spinach"] }
];

function NestedList() {
  return (
    <div>
      {items.map((item) => (
        <div key={item.id}>
          <h3>{item.name}</h3>
          <ul>
            {item.subItems.map((subItem, index) => (
              <li key={index}>{subItem}</li>
            ))}
          </ul>
        </div>
      ))}
    </div>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ item āĻ āĻāĻ•āĻŸāĻŋ subItems āĻ…ā§āĻ¯āĻžāĻ°ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻ†āĻŦāĻžāĻ° āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°ā§‡ .map() āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤


5. āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž

āĻ¯āĻ–āĻ¨ āĻ˛āĻŋāĻ¸ā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ†āĻ‡āĻŸā§‡āĻŽ āĻāĻ•āĻŸāĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ, āĻ¤āĻ–āĻ¨ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻĒā§‡āĻ¸āĻŋāĻĢāĻŋāĻ•ā§āĻ¯āĻžāĻ˛āĻŋ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

const products = [
  { id: 1, name: "Laptop", price: 1000 },
  { id: 2, name: "Phone", price: 500 },
  { id: 3, name: "Tablet", price: 300 }
];

function ProductList() {
  return (
    <ul>
      {products.map((product) => (
        <li key={product.id}>
          {product.name} - ${product.price}
        </li>
      ))}
    </ul>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ product āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻĨā§‡āĻ•ā§‡ name āĻāĻŦāĻ‚ price āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻ—ā§āĻ˛āĻŋ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤


6. Fragment āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž

React āĻ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ†āĻ‡āĻŸā§‡āĻŽ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ Fragment āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻžāĻ¤ā§‡ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ DOM āĻ¨ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ Fragment āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ° āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚āĻ•ā§‡ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°ā§‡āĨ¤

function ProductList() {
  const products = [
    { id: 1, name: "Laptop" },
    { id: 2, name: "Phone" }
  ];

  return (
    <>
      {products.map((product) => (
        <div key={product.id}>{product.name}</div>
      ))}
    </>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ <>...</> āĻāĻ•āĻŸāĻŋ Fragment āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻ¯āĻžāĻ¤ā§‡ DOM āĻ āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¨ā§‹āĻĄ āĻ¨āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ¯āĻŧāĨ¤


7. āĻ•āĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž

.filter() āĻŽā§‡āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻļāĻ°ā§āĻ¤ āĻĒā§‚āĻ°āĻŖāĻ•āĻžāĻ°ā§€ āĻ†āĻ‡āĻŸā§‡āĻŽāĻ—ā§āĻ˛ā§‹ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

const products = [
  { id: 1, name: "Laptop", inStock: true },
  { id: 2, name: "Phone", inStock: false },
  { id: 3, name: "Tablet", inStock: true }
];

function AvailableProductList() {
  return (
    <ul>
      {products
        .filter((product) => product.inStock)
        .map((product) => (
          <li key={product.id}>{product.name}</li>
        ))}
    </ul>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ inStock: true āĻĒā§āĻ°ā§‹āĻĄāĻžāĻ•ā§āĻŸāĻ—ā§āĻ˛ā§‹ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•ā§‡āĻŦāĻ˛ āĻ¸ā§‡āĻ—ā§āĻ˛ā§‹āĻ•ā§‡āĻ‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤


8. reduce() āĻŽā§‡āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚

āĻ¯āĻ–āĻ¨ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ, āĻ¤āĻ–āĻ¨ .reduce() āĻŽā§‡āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

const numbers = [1, 2, 3, 4, 5];

function SumList() {
  const sum = numbers.reduce((total, num) => total + num, 0);

  return <p>Sum of numbers: {sum}</p>;
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ numbers āĻāĻ° āĻŽā§‹āĻŸ āĻ¯ā§‹āĻ—āĻĢāĻ˛ sum āĻ¨āĻžāĻŽā§‡ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤


9. Pagination āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž

āĻ˛āĻŽā§āĻŦāĻž āĻ¤āĻžāĻ˛āĻŋāĻ•āĻž āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ Pagination āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°, āĻ¯āĻžāĻ¤ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻ• āĻ†āĻ‡āĻŸā§‡āĻŽ āĻĒā§āĻ°āĻ¤āĻŋ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻ¯āĻžāĻ¯āĻŧāĨ¤

function PaginatedList({ itemsPerPage }) {
  const items = Array.from({ length: 100 }, (_, index) => `Item ${index + 1}`);
  const [currentPage, setCurrentPage] = React.useState(1);

  const startIndex = (currentPage - 1) * itemsPerPage;
  const paginatedItems = items.slice(startIndex, startIndex + itemsPerPage);

  return (
    <div>
      <ul>
        {paginatedItems.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
      <button onClick={() => setCurrentPage((page) => Math.max(page - 1, 1))}>Previous</button>
      <button onClick={() => setCurrentPage((page) => page + 1)}>Next</button>
    </div>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ ā§§ā§Ļā§ĻāĻŸāĻŋ āĻ†āĻ‡āĻŸā§‡āĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻĒā§‡āĻœāĻŋāĻ¨ā§‡āĻŸā§‡āĻĄ āĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ¤āĻŋ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻ• āĻ†āĻ‡āĻŸā§‡āĻŽ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤


āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡:

React āĻ Rendering Lists āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻĢā§āĻ˛ā§‡āĻ•ā§āĻ¸āĻŋāĻŦāĻ˛ āĻāĻŦāĻ‚ āĻ‡āĻĢā§‡āĻ•ā§āĻŸāĻŋāĻ­ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ, āĻ¯āĻž UI āĻ•ā§‡ āĻĄāĻžāĻ‡āĻ¨āĻžāĻŽāĻŋāĻ• āĻāĻŦāĻ‚ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°ā§‡āĻ•āĻŸāĻŋāĻ­ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ•āĨ¤ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•ā§ŒāĻļāĻ˛ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€, .map(), .filter(), .reduce() āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻŽā§‡āĻĨāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœā§‡ āĻ˛āĻŋāĻ¸ā§āĻŸ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

Source:- https://react.dev/learn/rendering-lists

Keeping Components Pure āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

Pure Component āĻ§āĻžāĻ°āĻŖāĻžāĻŸāĻŋ React-āĻ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻāĻ•āĻŸāĻŋ āĻ•āĻ¨āĻ¸ā§‡āĻĒā§āĻŸ, āĻ¯āĻž component-āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻŽā§‡āĻ¨ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ component āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻšāĻœā§‡ āĻŦā§āĻāĻ¤ā§‡, debug āĻ•āĻ°āĻ¤ā§‡, āĻāĻŦāĻ‚ maintain āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤ Pure Component āĻŦāĻ˛āĻ¤ā§‡ āĻāĻŽāĻ¨ component āĻŦā§‹āĻāĻžāĻ¯āĻŧ, āĻ¯āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ input āĻŦāĻž props āĻĒā§‡āĻ˛ā§‡ āĻāĻ•āĻ‡ output āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ render āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ•ā§‹āĻ¨āĻ°āĻ•āĻŽ side effects (āĻ¯ā§‡āĻŽāĻ¨: network requests, DOM manipulation āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤

React-āĻ Keeping Components Pure āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻšāĻ˛ā§‹ component āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ pure āĻ°āĻžāĻ–āĻž, āĻ¯āĻžāĻ¤ā§‡ āĻ¤āĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ props āĻāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ā§‹ āĻŦāĻžāĻ‡āĻ°ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ (state āĻŦāĻž props āĻ›āĻžāĻĄāĻŧāĻž) āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻœāĻĄāĻŧāĻŋāĻ¤ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡āĨ¤ āĻ†āĻ¸ā§āĻ¨, React-āĻ pure components āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻŋāĨ¤

1. Pure Component āĻāĻ° āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯

  • Determinate Output: Pure component āĻāĻ•āĻ‡ props āĻĒā§‡āĻ˛ā§‡ āĻ¸āĻŦ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ•āĻ‡ result āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤
  • No Side Effects: Pure component render āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ•ā§‹āĻ¨ā§‹ external data modify āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤
  • Stateless: Pure components āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ stateless āĻšāĻ¯āĻŧāĨ¤ āĻ¤āĻŦā§‡ stateful component-āĻ“ pure āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯āĻĻāĻŋ state update āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž external āĻ­āĻžāĻŦā§‡ component āĻ•ā§‡ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤
  • Functional Approach: Pure components āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ functional approach āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§‡, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ component āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° props āĻāĻŦāĻ‚ state āĻāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻļā§€āĻ˛ āĻĨāĻžāĻ•ā§‡āĨ¤

2. Pure Component āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

React āĻ PureComponent āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļā§‡āĻˇ class āĻ†āĻ›ā§‡ āĻ¯āĻž Component class āĻĨā§‡āĻ•ā§‡ extend āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ shallow comparison āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ component āĻ•ā§‡ re-render āĻ•āĻ°āĻž āĻšāĻŦā§‡ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡, āĻ¯āĻž performance āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

import React, { PureComponent } from 'react';

class MyComponent extends PureComponent {
  render() {
    console.log("Rendering MyComponent");
    return <h1>{this.props.value}</h1>;
  }
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ MyComponent āĻāĻ•āĻŸāĻŋ PureComponentāĨ¤ āĻ¯āĻĻāĻŋ props.value āĻĒā§‚āĻ°ā§āĻŦā§‡āĻ° render āĻāĻ° props āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻāĻ‡ component āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ render āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤

3. Function Component āĻāĻŦāĻ‚ Purity

Function components āĻ¸āĻšāĻœā§‡āĻ‡ pure āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ•āĻžāĻ°āĻŖ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ state āĻāĻŦāĻ‚ lifecycle methods āĻ¨āĻž āĻĨāĻžāĻ•āĻžāĻ¯āĻŧ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ props āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ output āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

function Greeting({ name }) {
  return <h1>Hello, {name}!</h1>;
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ Greeting component āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ name props āĻĒā§‡āĻ˛ā§‡ āĻāĻ•āĻ‡ output āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚ āĻ•ā§‹āĻ¨ā§‹ side effects āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻž, āĻ¤āĻžāĻ‡ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ pure functionāĨ¤

4. Pure Component āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž

  • Debugging āĻ¸āĻšāĻœ: Pure component predictable āĻšāĻ“āĻ¯āĻŧāĻžāĻ¯āĻŧ āĻāĻŸāĻŋ debug āĻāĻŦāĻ‚ test āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻœ āĻšāĻ¯āĻŧāĨ¤
  • Performance āĻ‰āĻ¨ā§āĻ¨āĻ¤: Pure component shallow comparison āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ render āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻāĻĄāĻŧāĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯āĻž performance āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤
  • Reusable āĻāĻŦāĻ‚ Maintainable: Pure component āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ reusable āĻšāĻ¯āĻŧ, āĻ•āĻžāĻ°āĻŖ āĻ¤āĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ props āĻāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻļā§€āĻ˛ āĻĨāĻžāĻ•ā§‡ āĻāĻŦāĻ‚ āĻŦāĻžāĻ‡āĻ°ā§‡āĻ° āĻ•ā§‹āĻ¨ā§‹ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻœāĻĄāĻŧāĻŋāĻ¤ āĻĨāĻžāĻ•ā§‡ āĻ¨āĻžāĨ¤

5. Side Effects āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§‡ āĻšāĻ˛āĻž

Pure component āĻ render āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ•ā§‹āĻ¨ā§‹ side effect āĻ¨āĻž āĻĨāĻžāĻ•āĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤ Side effect āĻŦāĻ˛āĻ¤ā§‡ āĻāĻŽāĻ¨ āĻ•ā§‹āĻ¨ā§‹ āĻ•āĻžāĻœ āĻŦā§‹āĻāĻžāĻ¯āĻŧ āĻ¯āĻž component āĻāĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ†āĻ¨ā§‡āĨ¤ āĻ¯ā§‡āĻŽāĻ¨:

  • API calls āĻ•āĻ°āĻž
  • setTimeout āĻŦāĻž setInterval āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž
  • DOM manipulation āĻ•āĻ°āĻž

React āĻ side effects āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ useEffect hook (function component āĻāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡) āĻ…āĻĨāĻŦāĻž componentDidMount āĻāĻŦāĻ‚ componentDidUpdate lifecycle methods āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

// Side effect āĻ°āĻžāĻ–āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨ā§Ÿ
function MyComponent() {
  const [count, setCount] = useState(0);

  // āĻāĻ–āĻžāĻ¨ā§‡ render āĻ āĻ•ā§‹āĻ¨ā§‹ side effect āĻ°āĻžāĻ–āĻž āĻ‰āĻšāĻŋāĻ¤ āĻ¨ā§ŸāĨ¤
  return <h1>{count}</h1>;
}

Enter fullscreen mode Exit fullscreen mode

6. Shallow Comparison āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

React āĻāĻ° PureComponent shallow comparison āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĒā§āĻ°āĻ¨ā§‹ āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ props āĻ“ state āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ•ā§‹āĻ¨ā§‹ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡, āĻ¤āĻŦā§‡ component āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ render āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

import React, { PureComponent } from 'react';

class Counter extends PureComponent {
  render() {
    console.log("Rendering Counter");
    return <h1>{this.props.value}</h1>;
  }
}

// App Component
function App() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <Counter value={count} />
      <button onClick={() => setCount(count)}>Increment</button>
    </div>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ button āĻ setCount(count) āĻĻāĻŋāĻ˛ā§‡ Counter component āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ render āĻšāĻŦā§‡ āĻ¨āĻž āĻ•āĻžāĻ°āĻŖ count āĻāĻ° āĻĒā§‚āĻ°ā§āĻŦā§‡āĻ° āĻ“ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻŽāĻžāĻ¨ āĻāĻ•āĻ‡āĨ¤

7. Avoiding Mutable Data Structures

React āĻ mutable data structures āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ˛ā§‡ shallow comparison āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻž āĻāĻŦāĻ‚ performance āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸ā§ƒāĻˇā§āĻŸāĻŋ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻŦāĻ°āĻ‚ immutable data structures āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ˛ā§‡ PureComponent āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

Mutable vs Immutable Data

// Mutable object
const person = { name: "Alice" };
person.name = "Bob"; // direct mutation

// Immutable update
const newPerson = { ...person, name: "Bob" };

Enter fullscreen mode Exit fullscreen mode

React āĻ state update āĻāĻ° āĻ¸āĻŽāĻ¯āĻŧ immutable data structures āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ shallow comparison āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨ā§‡āĻ¯āĻŧāĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

8. React.memo āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž

React-āĻ function component āĻ•ā§‡ pure component āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ React.memo āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ function component āĻ•ā§‡ wrapper āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ shallow comparison āĻ•āĻ°ā§‡, āĻ¯āĻž PureComponent āĻāĻ° āĻŽāĻ¤ā§‹ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

const Greeting = React.memo(function Greeting({ name }) {
  console.log("Rendering Greeting");
  return <h1>Hello, {name}!</h1>;
});

// App Component
function App() {
  const [name, setName] = useState("Alice");

  return (
    <div>
      <Greeting name={name} />
      <button onClick={() => setName(name)}>Update Name</button>
    </div>
  );
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ Greeting component React.memo āĻĻā§āĻŦāĻžāĻ°āĻž wrapped, āĻ¤āĻžāĻ‡ name āĻ…āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻĨāĻžāĻ•āĻ˛ā§‡ component āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ render āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤

9. Pure Component āĻāĻ° Limitations

  • Complex Data Structures: Deeply nested āĻŦāĻž complex data structures āĻāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ shallow comparison āĻ•āĻžāĻœ āĻ¨āĻžāĻ“ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
  • Frequent Updates: āĻ¯āĻ–āĻ¨ props āĻŦāĻž state frequently update āĻšāĻ¯āĻŧ āĻ¤āĻ–āĻ¨ shallow comparison āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
  • Callback Functions: āĻ¯āĻ–āĻ¨ parent component callback function props āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ, āĻ¤āĻ–āĻ¨ callback function āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻ¨āĻž āĻšāĻ˛ā§‡ pure component update āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤

10. Pure Component āĻ āĻ¨āĻž āĻ°āĻžāĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻˇā§Ÿ

  • State āĻŦāĻž props āĻ›āĻžāĻĄāĻŧāĻž āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ā§‹ external data āĻāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻļā§€āĻ˛ operationsāĨ¤
  • Random āĻŦāĻž dynamic data āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻ­āĻŋāĻ¨ā§āĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
  • Asynchronous operations āĻ¯āĻž render āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

React āĻ component āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ pure āĻ°āĻžāĻ–āĻž performance āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ code debugging āĻ“ maintenance āĻ¸āĻšāĻœ āĻ•āĻ°ā§‡āĨ¤ PureComponent āĻŦāĻž React.memo āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ component āĻ—ā§āĻ˛ā§‹ pure āĻ°āĻžāĻ–āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻž component rerendering āĻ•ā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻž side effects āĻĒāĻ°āĻŋāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ immutable data structures āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ pure component āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž React application āĻ•ā§‡ āĻ†āĻ°āĻ“ efficient āĻāĻŦāĻ‚ responsive āĻ•āĻ°ā§‡ āĻ¤ā§āĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

Source:- https://react.dev/learn/keeping-components-pure

Your UI as a Tree āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž

image.png

React āĻ "UI as a Tree" āĻ§āĻžāĻ°āĻŖāĻžāĻŸāĻŋ āĻšāĻ˛ā§‹ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ‡āĻ‰āĻœāĻžāĻ° āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ—āĻžāĻ›ā§‡āĻ° (Tree) āĻ†āĻ•āĻžāĻ°ā§‡ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻž, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ UI āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻŦāĻž āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ—āĻžāĻ›ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨ā§‹āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĨ¤ āĻāĻ‡ āĻ—āĻžāĻ›āĻŸāĻŋ āĻŽā§‚āĻ˛āĻ¤ āĻāĻ•āĻŸāĻŋ āĻšāĻžāĻ¯āĻŧāĻžāĻ°āĻžāĻ°āĻ•āĻŋāĻ•āĻžāĻ˛ āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ° āĻ¯āĻž āĻ°ā§āĻŸ āĻĨā§‡āĻ•ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻļāĻžāĻ–āĻžāĻ¯āĻŧ āĻŦāĻŋāĻ­āĻ•ā§āĻ¤ āĻšāĻ¯āĻŧā§‡ āĻļā§‡āĻˇ āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤ā§‡ āĻ˛āĻŋāĻĢ āĻ¨ā§‹āĻĄā§‡ āĻ—āĻŋāĻ¯āĻŧā§‡ āĻļā§‡āĻˇ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ React āĻ āĻĄā§‡āĻŸāĻž āĻ“ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ° āĻŦā§‹āĻāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ§āĻžāĻ°āĻŖāĻž, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻĒā§‡āĻ° UI āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ“ āĻ°ā§‡āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ‚āĻ¯āĻŧā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻ•āĻ°ā§‡āĨ¤

āĻāĻ‡ āĻ§āĻžāĻ°āĻ¨āĻžāĻŸāĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻšāĻ˛ā§‡ āĻ†āĻ¸ā§āĻ¨ UI as a Tree āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻŋāĨ¤

1. UI as a Tree āĻ•ā§‡āĻ¨ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ?

React āĻāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻ˛ā§‹ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°āĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ UI component āĻ¤āĻžāĻ° parent component āĻĨā§‡āĻ•ā§‡ data āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°ā§‡āĨ¤ UI āĻ•ā§‡ āĻ—āĻžāĻ› āĻ†āĻ•āĻžāĻ°ā§‡ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°āĻžāĻ° āĻĢāĻ˛ā§‡ UI āĻ•ā§‡ āĻ›ā§‹āĻŸ āĻ›ā§‹āĻŸ āĻ…āĻ‚āĻļā§‡ āĻ­āĻžāĻ— āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ‚āĻļ āĻāĻ•āĻŸāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ•ā§‹āĻĄāĻ•ā§‡ āĻ†āĻ°ā§‹ modular, reusable, āĻāĻŦāĻ‚ maintainable āĻ•āĻ°ā§‡ āĻ¤ā§‹āĻ˛ā§‡āĨ¤

2. Component Hierarchy

React āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ—āĻžāĻ›ā§‡āĻ° āĻāĻ•āĻŸāĻŋ node āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° children āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ contain āĻ•āĻ°ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ UI āĻāĻ° āĻŽā§‚āĻ˛ āĻ…āĻ‚āĻļāĻŸāĻŋ Root Node āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻŦāĻžāĻ•ā§€ component āĻ—ā§āĻ˛ā§‹ āĻ¤āĻžāĻ° nested children āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĨāĻžāĻ•ā§‡āĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ website āĻāĻ° UI āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ tree structure āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°āĻ˛ā§‡ āĻ¨āĻŋāĻšā§‡āĻ° āĻŽāĻ¤ā§‹ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

<App>
  ├── <Header>
  │     ├── <Logo />
  │     └── <NavBar />
  ├── <Main>
  │     ├── <Sidebar />
  │     └── <Content>
  │           ├── <Article />
  │           └── <Comments />
  └── <Footer />

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ <App> āĻŽā§‚āĻ˛ root component, āĻ¯ā§‡āĻŸāĻŋ āĻ—āĻžāĻ›ā§‡āĻ° āĻŽā§‚āĻ˛ āĻļāĻžāĻ–āĻžāĨ¤ App āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸā§‡āĻ° child āĻšāĻ˛ā§‹ <Header>, <Main>, āĻāĻŦāĻ‚ <Footer> āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ child component-āĻāĻ° āĻ†āĻŦāĻžāĻ° āĻ¤āĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ° child component āĻ†āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻ§āĻ°āĻŖā§‡āĻ° nested structure āĻ—āĻ āĻ¨ āĻ•āĻ°ā§‡āĻ‡ āĻāĻ•āĻŸāĻŋ UI āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ¯āĻŧāĨ¤

3. React Component Tree āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž

UI āĻ•ā§‡ tree āĻ†āĻ•āĻžāĻ°ā§‡ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻšāĻ˛ā§‡ āĻ¨āĻŋāĻšā§‡āĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ—ā§āĻ˛āĻŋ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ:

  • Modular Design: āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ component āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ…āĻ‚āĻļā§‡āĻ° āĻ•āĻžāĻœ āĻ•āĻ°ā§‡, āĻ¤āĻžāĻ‡ āĻāĻ•āĻŸāĻŋ component āĻ¸āĻšāĻœā§‡āĻ‡ āĻ…āĻ¨ā§āĻ¯ component āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻŦāĻžāĻ§ā§€āĻ¨ āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
  • Reusable Components: āĻāĻ•āĻŸāĻŋ component āĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ components āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻž āĻ•ā§‹āĻĄā§‡āĻ° āĻĒā§āĻ¨āĻƒāĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧāĨ¤
  • Data Flow āĻ¸āĻšāĻœ āĻšā§Ÿ: React āĻ data āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ top-down flow āĻšāĻ¯āĻŧ, āĻ…āĻ°ā§āĻĨāĻžā§Ž parent āĻĨā§‡āĻ•ā§‡ child component āĻ—ā§āĻ˛ā§‹āĻ° āĻĻāĻŋāĻ•ā§‡āĨ¤ Tree structure āĻ āĻāĻ‡ āĻĄāĻžāĻŸāĻž āĻĢā§āĻ˛ā§‹ āĻ¸āĻšāĻœā§‡āĻ‡ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
  • UI Isolation: āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ component isolated āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻĢāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ component āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ…āĻ¨ā§āĻ¯ component-āĻ•ā§‡ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤

4. Breaking UI into Components

UI āĻ•ā§‡ component tree āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ§āĻžāĻĒ āĻšāĻ˛ā§‹ UI āĻ•ā§‡ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻ›ā§‹āĻŸ āĻ›ā§‹āĻŸ component āĻ āĻ­āĻžāĻ— āĻ•āĻ°āĻžāĨ¤ React application āĻāĻ° UI āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ‚āĻļāĻ•ā§‡ āĻ¯āĻ¤āĻŸāĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ›ā§‹āĻŸ components āĻ āĻ­āĻžāĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ: āĻ§āĻ°āĻž āĻ¯āĻžāĻ•, āĻāĻ•āĻŸāĻŋ blog page āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻ¤ā§‡ Header, Sidebar, āĻāĻŦāĻ‚ Content section āĻĨāĻžāĻ•āĻŦā§‡āĨ¤ Content āĻāĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡āĻ“ multiple sections āĻĨāĻžāĻ•āĻŦā§‡āĨ¤ āĻāĻ­āĻžāĻŦā§‡ āĻ—āĻžāĻ›ā§‡āĻ° āĻŽāĻ¤ component hierarchy āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

5. Component Tree āĻ Data Flow

React āĻ data āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ•āĻŽā§āĻ–ā§€ āĻĒāĻĨā§‡ āĻĒā§āĻ°āĻŦāĻžāĻšāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ Parent component āĻ¤āĻžāĻĻā§‡āĻ° child component āĻ—ā§āĻ˛ā§‹āĻ° āĻ•āĻžāĻ›ā§‡ props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ data āĻĒāĻžāĻ āĻžāĻ¯āĻŧāĨ¤ āĻāĻ‡ structure āĻ data āĻāĻ° flow āĻ•ā§‡ manage āĻ•āĻ°āĻž āĻ¸āĻšāĻœ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ bug āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻžāĻ“ āĻ¸āĻšāĻœ āĻšāĻ¯āĻŧāĨ¤

  • Top-Down Data Flow: Parent component āĻāĻ° data props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ child component āĻ āĻ¯āĻžāĻ¯āĻŧāĨ¤
  • State Uplifting: āĻ•ā§‹āĻ¨ āĻāĻ•āĻŸāĻŋ child component āĻ data āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ˛ā§‡, āĻ¸ā§‡āĻ‡ data āĻ•ā§‡ āĻ¤āĻžāĻ° parent component āĻ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

Example:

function App() {
  const [user, setUser] = useState("John Doe");

  return (
    <div>
      <Header user={user} />
      <MainContent user={user} />
    </div>
  );
}

function Header({ user }) {
  return <h1>Welcome, {user}!</h1>;
}

function MainContent({ user }) {
  return <p>Hi {user}, here is your main content.</p>;
}

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ App component āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ user state āĻ†āĻ›ā§‡, āĻ¯āĻž Header āĻāĻŦāĻ‚ MainContent component āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ props āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻĒāĻžāĻ āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ user state āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ˛ā§‡ āĻāĻ‡ props āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻŦ child component āĻ†āĻĒāĻĄā§‡āĻŸ āĻšāĻ¯āĻŧāĨ¤

6. Rendering āĻāĻŦāĻ‚ Virtual DOM

React āĻāĻ•āĻŸāĻŋ Virtual DOM āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ¯āĻž āĻŽā§‚āĻ˛āĻ¤ component tree āĻ•ā§‡ track āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ tree āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¯ā§‡āĻ¸āĻŦ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ efficiently update āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻ–āĻ¨ UI āĻāĻ° āĻ•ā§‹āĻ¨ āĻ…āĻ‚āĻļ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻ–āĻ¨ React āĻ¸ā§‡āĻ‡ āĻ…āĻ‚āĻļāĻŸāĻŋ Virtual DOM āĻ update āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ browser āĻ render āĻ•āĻ°ā§‡āĨ¤ Tree structure āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ—āĻ āĻ¨ āĻ•āĻ°āĻž āĻĨāĻžāĻ•āĻ˛ā§‡ āĻāĻ‡ rendering process āĻ†āĻ°āĻ“ āĻ¸āĻšāĻœ āĻšāĻ¯āĻŧāĨ¤

7. Component Tree Structure āĻāĻŦāĻ‚ Performance Optimization

React āĻāĻ° UI tree āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ˛ā§‹ āĻ¸āĻšāĻœā§‡ performance optimization āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ Component āĻ—ā§āĻ˛ā§‹āĻ•ā§‡ isolated āĻ°ā§‡āĻ–ā§‡ render āĻ•āĻ°āĻž āĻ—ā§‡āĻ˛ā§‡, āĻļā§āĻ§ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ component āĻ—ā§āĻ˛ā§‹ re-render āĻšāĻŦā§‡āĨ¤

  • Memoization: React.memo āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•ā§‹āĻ¨ā§‹ component āĻ•ā§‡ prevent āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§‡ unnecessary rendering āĻ¨āĻž āĻšāĻ¯āĻŧāĨ¤
  • Lazy Loading: Nested component āĻ—ā§āĻ˛ā§‹ lazy load āĻ•āĻ°ā§‡ performance āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

8. Component Tree āĻāĻŦāĻ‚ UI Testing

Tree structure āĻ component āĻ—ā§āĻ˛ā§‹ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻĨāĻžāĻ•āĻ˛ā§‡ testing āĻ¸āĻšāĻœ āĻšāĻ¯āĻŧāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ isolated component āĻāĻ° āĻœāĻ¨ā§āĻ¯ unit testing āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻĒā§āĻ°ā§‹ UI āĻ—āĻžāĻ›ā§‡āĻ° structure āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§€ integration testing āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

9. Component Tree Visualization

React āĻ component tree visualization āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ debugging toolāĨ¤ React DevTools āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ component tree structure āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ component āĻāĻ° hierarchy, props, āĻāĻŦāĻ‚ state āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ§āĻžāĻ°āĻŖāĻž āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸āĻš āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

React āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻŸāĻŋ UI āĻ•ā§‡ tree structure āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°āĻž āĻšāĻ˛ā§‡ āĻ¤āĻž āĻ›ā§‹āĻŸ āĻ›ā§‹āĻŸ reusable component āĻ āĻ­āĻžāĻ— āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¯ā§‡āĻŽāĻ¨, āĻ§āĻ°ā§āĻ¨ āĻāĻ•āĻŸāĻŋ e-commerce website āĻāĻ° Product page āĻāĻ° UI tree āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§‚āĻĒ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡:

<ProductPage>
  ├── <ProductDetails>
  │     ├── <ProductImage />
  │     ├── <ProductDescription />
  │     └── <AddToCartButton />
  ├── <RelatedProducts>
  │     ├── <ProductCard />
  │     └── <ProductCard />
  └── <CustomerReviews>
        ├── <Review />
        └── <Review />

Enter fullscreen mode Exit fullscreen mode

āĻāĻ–āĻžāĻ¨ā§‡ ProductPage component āĻāĻ° child āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ ProductDetails, RelatedProducts, āĻāĻŦāĻ‚ CustomerReviews component āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•āĻŸāĻŋ component āĻ¤āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻ…āĻ‚āĻļā§‡āĻ° āĻ•āĻžāĻœ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ component āĻ—ā§āĻ˛ā§‹āĻ° āĻ¸āĻ™ā§āĻ—ā§‡ āĻ•ā§‹āĻ¨ā§‹ coupling āĻ¨ā§‡āĻ‡āĨ¤

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°: React āĻ UI āĻ•ā§‡ āĻ—āĻžāĻ›ā§‡āĻ° āĻŽāĻ¤ā§‹ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹ āĻšāĻ˛ā§‡ āĻ¤āĻž āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻŽāĻĄāĻŋāĻ‰āĻ˛āĻžāĻ°āĻŋāĻŸāĻŋ, āĻ°āĻŋāĻ‡āĻ‰āĻœā§‡āĻŦāĻŋāĻ˛āĻŋāĻŸāĻŋ, āĻāĻŦāĻ‚ maintainability āĻŦāĻžāĻĄāĻŧāĻžāĻ¯āĻŧāĨ¤ āĻ¤āĻžāĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āĻŽā§āĻ–ā§€ data flow āĻāĻŦāĻ‚ isolated rendering āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ performance āĻŦāĻžāĻĄāĻŧā§‡ āĻāĻŦāĻ‚ bug āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¸āĻšāĻœ āĻšāĻ¯āĻŧāĨ¤ React āĻ component tree āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• UI āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻĢāĻ˛ā§‡ āĻŦāĻĄāĻŧ application-āĻ•ā§‡ āĻ¸āĻšāĻœā§‡āĻ‡ scale āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ‰āĻ¨ā§āĻ¨āĻ¤ user experience āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻšāĻ¯āĻŧāĨ¤

Source:- https://react.dev/learn/understanding-your-ui-as-a-tree

rsmacademybd Article's
15 articles in total
Favicon
Redux Middleware āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž
Favicon
Describing the React UI
Favicon
JavaScript āĻāĻŦāĻ‚ React āĻ Debounce āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž
Favicon
Using Local Storage API With JavaScript And React JS
Favicon
Web Storage API Explained with Examples
Favicon
Web History API Explained with Examples
Favicon
Event Propagation - Bubbling vs Capturing Explained with Examples
Favicon
React Props Explained with Examples
Favicon
JavaScript Event Delegation āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž
Favicon
Recursion in JavaScript āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž
Favicon
Currying in JavaScript āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž
Favicon
Higher-Order Functions (HOFs) āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž
Favicon
JavaScript Execution Context āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž
Favicon
JavaScript Closures āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž
Favicon
Install React Router Dom With Tailwind CSS

Featured ones: