dev-resources.site
for different kinds of informations.
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>
);
}
āĻāĻāĻžāĻ¨ā§ 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;
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;
āĻāĻāĻ¨ 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>
);
}
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>;
}
āĻāĻāĻ¨, Greeting
component-āĻā§ name
āĻĒā§āĻ°āĻĒāĻ¸ āĻ¸āĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ˛ā§ āĻāĻāĻŋ āĻ¸ā§āĻ name
-āĻāĻ° āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻŦā§āĨ¤
function App() {
return (
<div>
<Greeting name="Alice" />
<Greeting name="Bob" />
</div>
);
}
āĻāĻāĻžāĻ¨ā§, 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>;
}
āĻāĻāĻžāĻ¨ā§, 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>
);
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻĒāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ 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;
āĻ¨ā§āĻ: āĻ¨ā§āĻŽāĻĄ āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻā§āĻ° āĻ¸āĻŽā§ āĻāĻŽā§āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻž āĻ¨āĻžāĻŽāĻā§āĻ˛ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĻā§āĻāĻž āĻĻā§āĻŦā§āĨ¤
(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>;
}
āĻāĻāĻ¨ Header
component-āĻā§ āĻ
āĻ¨ā§āĻ¯ āĻā§āĻ¨ā§ āĻĢāĻžāĻāĻ˛ā§ import āĻāĻ°āĻ˛ā§ import-āĻāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻ¯ā§ āĻā§āĻ¨ā§ āĻ¨āĻžāĻŽ āĻĻāĻŋā§ā§ āĻĄāĻžāĻāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
// File: App.js
import React from 'react';
import Header from './Header';
function App() {
return (
<div>
<Header />
</div>
);
}
export default App;
āĻāĻāĻžāĻ¨ā§ 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;
(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;
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;
āĻāĻāĻ¨ āĻāĻ āĻĢāĻžāĻāĻ˛ āĻĨā§āĻā§ 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;
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>;
}
// 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;
āĻāĻāĻžāĻ¨ā§ 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>;
āĻāĻāĻžāĻ¨ā§ <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>
);
}
āĻāĻĒāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ <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" />;
}
(iii) JavaScript Expressions āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°
JSX āĻ {}
āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ JavaScript expressions āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻŋ āĻā§āĻ¨ āĻā§āĻ°āĻŋā§ā§āĻŦāĻ˛, āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨, āĻŦāĻž āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻāĻāĻāĻĒā§āĻ JSX āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
function Greeting() {
const name = "Alice";
return <h1>Hello, {name}!</h1>;
}
āĻāĻāĻžāĻ¨ā§ {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>;
}
āĻāĻāĻžāĻ¨ā§ headingStyle
āĻāĻāĻāĻŋ object āĻšāĻŋāĻ¸āĻžāĻŦā§ style attribute āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
(ii) className āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°
function ClassComponent() {
return <div className="my-class">This is a div with a class</div>;
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
6. Fragments āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°
React āĻ multiple elements āĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ Fragment (<> </>
) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¯āĻžāĻ¤ā§ āĻ
āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ HTML tag āĻ¯ā§āĻā§āĻ¤ āĻ¨āĻž āĻšā§āĨ¤
function FragmentComponent() {
return (
<>
<h1>Title</h1>
<p>Description</p>
</>
);
}
āĻāĻāĻžāĻ¨ā§ <></>
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>;
āĻāĻāĻŋ JavaScript āĻ āĻ°ā§āĻĒāĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ˛ā§ āĻāĻŽāĻ¨ āĻšā§:
const element = React.createElement("h1", null, "Hello, World!");
8. JSX āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž
-
āĻ¸ā§āĻŦāĻŋāĻ§āĻž:
- JavaScript āĻāĻ° āĻ¸āĻžāĻĨā§ HTML structure āĻŽāĻŋāĻļāĻŋā§ā§ component āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻšā§āĨ¤
- UI āĻāĻ āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻā§āĻāĻ¨ā§āĻ¨ āĻā§āĻĄ āĻ˛āĻŋāĻāĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°ā§āĨ¤
- JavaScript āĻāĻ° āĻ¸āĻāĻ˛ āĻā§āĻˇāĻŽāĻ¤āĻž JSX āĻ āĻĒāĻžāĻā§āĻž āĻ¯āĻžā§, āĻ¤āĻžāĻ dynamic UI āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻšāĻāĨ¤
-
āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž:
- āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ statements (āĻ¯ā§āĻŽāĻ¨ loops, if-else) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžā§ āĻ¨āĻžāĨ¤
- āĻ¸āĻŦ āĻ¸āĻŽā§ parent element āĻĨāĻžāĻāĻž āĻāĻŦāĻļā§āĻ¯āĻ, āĻ¯āĻĻāĻŋāĻ āĻāĻāĻŋ āĻĢā§āĻ°ā§āĻ¯āĻžāĻāĻŽā§āĻ¨ā§āĻ āĻĻāĻŋā§ā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ¯ā§āĻā§āĻ¯āĨ¤
đĄ
- JSX āĻ HTML āĻāĻ° āĻŽāĻ¤ā§ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšā§ āĻ¯āĻž āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻā§āĻ¤āĻ°ā§ āĻ˛ā§āĻāĻž āĻšā§āĨ¤
-
{ }
āĻāĻŋāĻšā§āĻ¨ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤ -
className
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ CSS āĻā§āĻ˛āĻžāĻ¸ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨ āĻāĻ°āĻž āĻšā§āĨ¤ - āĻ¸ā§āĻāĻžāĻāĻ˛ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§
style
āĻ ā§āĻ¯āĻžāĻā§āĻ°āĻŋāĻŦāĻŋāĻāĻā§āĻ° āĻŽāĻžāĻ¨ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻ āĻŦāĻā§āĻā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšā§āĨ¤ - āĻĢā§āĻ°ā§āĻ¯āĻžāĻāĻŽā§āĻ¨ā§āĻ, āĻ˛āĻŋāĻ¸ā§āĻ āĻāĻŦāĻ āĻāĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ 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>;
}
āĻāĻāĻžāĻ¨ā§ {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>;
}
āĻāĻāĻžāĻ¨ā§ {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>
);
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
āĻāĻāĻžāĻ¨ā§, 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>
);
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
{ }
āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¯ā§ āĻā§āĻ¨ā§ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨ āĻ˛ā§āĻāĻž āĻ¯āĻžā§āĨ¤
{ }
āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻā§āĻ°āĻŋā§ā§āĻŦāĻ˛, āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛, āĻā§āĻ°āĻ¨āĻžāĻ°āĻŋ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°, āĻ ā§āĻ¯āĻžāĻ°ā§ āĻŽā§āĻĨāĻĄ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤āĻ āĻŦāĻā§āĻā§āĻā§āĻ° āĻĒā§āĻ°āĻĒāĻžāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻ¨ā§āĻ¸ā§āĻā§āĻĄ āĻ āĻŦāĻā§āĻā§āĻ
{ }
āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤āĻļāĻ°ā§āĻ¤ āĻ¸āĻžāĻĒā§āĻā§āĻˇā§ āĻāĻŋāĻā§āĻ¯ā§ā§āĻžāĻ˛ āĻāĻ˛āĻŋāĻŽā§āĻ¨ā§āĻ āĻšāĻžāĻāĻĄ āĻŦāĻž āĻļā§ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯
&&
āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯āĻžā§āĨ¤āĻāĻžāĻ°ā§āĻ˛āĻŋ āĻŦā§āĻ°ā§āĻ¸ā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° 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>;
}
āĻāĻāĻžāĻ¨ā§ Welcome
āĻ¨āĻžāĻŽāĻ component-āĻāĻŋ props
āĻ¨āĻžāĻŽāĻ object āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ name
āĻ¨āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ value display āĻāĻ°āĻā§āĨ¤
2. Props āĻā§āĻāĻžāĻŦā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ?
Props āĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ parent component-āĻ child component-āĻā§ HTML attribute āĻāĻ° āĻŽāĻ¤ā§ āĻāĻ°ā§ value assign āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖ:
function App() {
return <Welcome name="Alice" />;
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻāĻžāĻ¨ā§ 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" />;
}
āĻāĻāĻžāĻ¨ā§ 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" />;
}
āĻāĻāĻžāĻ¨ā§ 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} />;
}
āĻāĻāĻžāĻ¨ā§ 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 />;
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻĒāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ 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} />;
}
āĻāĻāĻžāĻ¨ā§ 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} />;
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
āĻāĻāĻžāĻ¨ā§ 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
};
āĻāĻāĻžāĻ¨ā§ 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} />;
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
āĻāĻāĻžāĻ¨ā§ 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" />;
}
āĻāĻāĻžāĻ¨ā§ 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;
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
}
āĻāĻāĻžāĻ¨ā§ isLoggedIn
āĻāĻŦāĻ isAdmin
āĻāĻāĻ¯āĻŧ āĻļāĻ°ā§āĻ¤ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻ˛ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻŦā§āĨ¤
7. āĻāĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻā§āĻ˛āĻžāĻ¸ āĻ¨āĻžāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ
React āĻ āĻāĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻā§āĻ˛āĻžāĻ¸ āĻ¨āĻžāĻŽ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻļāĻ°ā§āĻ¤ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ CSS āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤
function Notification({ type, message }) {
return (
<div className={`notification ${type === "error" ? "error" : "success"}`}>
{message}
</div>
);
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻāĻžāĻ¨ā§ 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} />;
}
āĻāĻāĻžāĻ¨ā§ 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} />;
}
āĻāĻāĻžāĻ¨ā§ time
āĻāĻ° āĻŽāĻžāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ Good morning!
, Good afternoon!
, āĻŦāĻž Good evening!
āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĻā§āĻāĻžāĻŦā§āĨ¤
āĻ¸āĻāĻā§āĻˇā§āĻĒā§:
-
if-else
statement : āĻāĻāĻžāĻ§āĻŋāĻ āĻļāĻ°ā§āĻ¤ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤āĨ¤ -
ternary
operator : āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸āĻšāĻ āĻāĻŦāĻ āĻāĻ¨āĻ˛āĻžāĻāĻ¨ āĻļāĻ°ā§āĻ¤ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤āĨ¤ -
&&
operator : āĻāĻāĻ āĻļāĻ°ā§āĻ¤ā§ āĻāĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻŦāĻ āĻ¸āĻšāĻžāĻ¯āĻŧāĻāĨ¤ -
switch-case
: āĻāĻāĻžāĻ§āĻŋāĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻā§āĻ¸ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ°āĻŋāĻ āĻāĻ° āĻāĻ¨ā§āĻ¯āĨ¤ - āĻāĻ¨ā§āĻĄāĻŋāĻļāĻ¨āĻžāĻ˛ āĻ¸ā§āĻāĻžāĻāĻ˛āĻŋāĻ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ : āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻ āĻ¸āĻŋāĻāĻ¸āĻāĻ¸ āĻĒā§āĻ°āĻ¯āĻŧā§āĻā§ āĻ¸āĻšāĻžāĻ¯āĻŧāĻāĨ¤
- 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>
);
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
āĻāĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ 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>
);
}
āĻāĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻāĻā§āĻŽ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ 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>
);
}
āĻāĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ 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>
);
}
āĻāĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ 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>
))}
</>
);
}
āĻāĻāĻžāĻ¨ā§ <>...</>
āĻāĻāĻāĻŋ 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>
);
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻāĻžāĻ¨ā§ 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>
);
}
āĻāĻāĻžāĻ¨ā§ ā§§ā§Ļā§ĻāĻāĻŋ āĻāĻāĻā§āĻŽā§āĻ° āĻāĻāĻāĻŋ āĻ˛āĻŋāĻ¸ā§āĻ āĻĒā§āĻāĻŋāĻ¨ā§āĻā§āĻĄ āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻ¤āĻŋ āĻĒā§āĻˇā§āĻ āĻžāĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻāĻā§āĻ¯āĻ āĻāĻāĻā§āĻŽ āĻ°ā§āĻ¨ā§āĻĄāĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤
āĻ¸āĻāĻā§āĻˇā§āĻĒā§:
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>;
}
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
āĻāĻāĻžāĻ¨ā§ 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>;
}
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>
);
}
āĻāĻāĻžāĻ¨ā§ 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" };
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>
);
}
āĻāĻāĻžāĻ¨ā§ 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 āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻ˛ā§āĻāĻ¨āĻž
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 />
āĻāĻāĻžāĻ¨ā§ <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>;
}
āĻāĻāĻžāĻ¨ā§ 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 />
āĻāĻāĻžāĻ¨ā§ 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
Featured ones: