Skip to content
FrontendReactJs

React Props and State Data Flow Hindi – समझे आसान भाषा में 2026

April 14, 2026 18 min read

नमस्ते दोस्तों! 🙏
स्वागत है The Easy Master पर!

क्या तुमने कभी सोचा है – React app में data ek jagah se dusri jagah kaise jaata hai?

जब तुम एक Instagram post like karte ho – sirf like button change hota hai, count increase hota hai – lekin poora page reload nahi hota. ये सब possible है Props and State की वजह से।

React Props State Data Flow Hindi में समझना बहुत जरूरी है क्योंकि:

  • Props and State – React ke do most important concepts हैं
  • Bina props and state के interactive app nahi bana sakte
  • Interview में 100% props/state related questions पूछे जाते हैं
  • Real projects में har component props ya state use karta hai

Aaj kya seekhoge?

TopicKya Sikhega?
PropsParent se child mein data kaise bhejein
StateComponent ka apna memory kaise manage karein
Data FlowUnidirectional (ek direction) flow kya hai
Lifting State UpSibling components mein data kaise share karein
Controlled ComponentsForms ko React way mein handle karna

Kya tumhe pata hai?
Props read-only होते हैं – change nahi kar sakte। State mutable है – change kar sakte हो। ये React का golden rule है!

तो चलिए शुरू करते हैं – React Props and State Data Flow Hindi सीखने का सफर! 🚀



1. React Props and State Data Flow Hindi – Introduction

React Props and State

React Props and State Data Flow Hindi में तीन main concepts हैं:

1. Props (Properties)

Parent component → Child component data bhejna

2. State

Component ka apna memory – jo time ke saath badal sakta hai

3. Data Flow

React में data ek direction mein flow karta है – top to bottom

Simple Analogy:

Socho ek company hai:

ConceptAnalogy
PropsBoss (parent) → Employee (child) को instructions (read-only)
StateEmployee का apna notebook – woh khud likh/badal sakta hai
Data FlowInstructions sirf upar se neeche jaate hain – employee boss ko instruction nahi de sakta

React Props and State Data Flow Hindi में इन तीनों को detail में समझेंगे।


2. Props क्या हैं? (Properties)

Props = Properties – data jo parent component child component को pass karta hai।

Props Ki 3 Golden Rules:

Code
// RULE 1: Props are READ-ONLY – modify nahi kar sakte
function ChildComponent(props) {
  // props.name = "New Name"; // ❌ ERROR – cannot modify props
  return <h1>{props.name}</h1>;
}

// RULE 2: Props can be any data type
function App() {
  return (
    <UserCard
      name="Rahul"           // string
      age={25}               // number
      isActive={true}        // boolean
      hobbies={["coding", "gaming"]}  // array
      address={{ city: "Mumbai", pincode: 400001 }}  // object
      onLike={() => console.log("Liked!")}  // function
    />
  );
}

// RULE 3: Props ka data parent se child tak jaata hai (one-way)
// App → UserCard → UserInfo → UserAvatar (ek hi direction)

Props Destructuring – Cleaner Way:

Code
// ❌ Without destructuring – repetitive
function Welcome(props) {
  return (
    <div>
      <h1>Hello, {props.name}</h1>
      <p>Age: {props.age}</p>
      <p>City: {props.city}</p>
    </div>
  );
}

// ✅ With destructuring – clean
function Welcome({ name, age, city }) {
  return (
    <div>
      <h1>Hello, {name}</h1>
      <p>Age: {age}</p>
      <p>City: {city}</p>
    </div>
  );
}

// ✅ Default props – agar value pass nahi ki toh default use hoga
function Greeting({ name = "Guest", greeting = "Namaste" }) {
  return <h1>{greeting}, {name}!</h1>;
}

// Usage:
<Greeting />                    // Output: Namaste, Guest!
<Greeting name="Rahul" />       // Output: Namaste, Rahul!
<Greeting name="Priya" greeting="Hello" /> // Output: Hello, Priya!

Children Props – Special Prop:

Code
// Parent component
function App() {
  return (
    <Card>
      <h2>Card Title</h2>
      <p>This is card content</p>
      <button>Click Me</button>
    </Card>
  );
}

// Child component – props.children se access
function Card({ children }) {
  return (
    <div className="card">
      <div className="card-header">Header</div>
      <div className="card-body">{children}</div>
      <div className="card-footer">Footer</div>
    </div>
  );
}

React Props State Data Flow Hindi mein props ko samjho – yeh data pass karne ka standard way hai।


3. State क्या है?

State = Component ka internal memory jo time ke saath badal sakti hai।

useState Hook – State Banane Ka Tarika:

Code
import { useState } from 'react';

function Counter() {
  // Syntax: const [value, setValue] = useState(initialValue);
  const [count, setCount] = useState(0);     // number state
  const [name, setName] = useState("");       // string state
  const [user, setUser] = useState(null);     // null/object state
  const [items, setItems] = useState([]);     // array state
  
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>
        Increment
      </button>
    </div>
  );
}

State Kis Tarah Ka Data Store Kar Sakti Hai:

Code
function UserProfile() {
  // 1. Number state
  const [age, setAge] = useState(25);
  
  // 2. String state
  const [name, setName] = useState("Rahul");
  
  // 3. Boolean state
  const [isLoggedIn, setIsLoggedIn] = useState(false);
  
  // 4. Array state
  const [hobbies, setHobbies] = useState(["coding", "reading"]);
  
  // 5. Object state
  const [user, setUser] = useState({
    id: 1,
    name: "Rahul",
    email: "rahul@example.com"
  });
  
  // 6. Null state (loading/fetching ke liye)
  const [data, setData] = useState(null);
  
  // Add to array
  const addHobby = (newHobby) => {
    setHobbies([...hobbies, newHobby]);
  };
  
  // Update object
  const updateUserName = (newName) => {
    setUser({ ...user, name: newName });
  };
  
  return (
    <div>
      <p>Name: {name}</p>
      <p>Age: {age}</p>
      <button onClick={() => setAge(age + 1)}>Birthday!</button>
    </div>
  );
}

State Update – Important Rules:

Code
function Counter() {
  const [count, setCount] = useState(0);
  
  // ✅ CORRECT – using setter function
  const increment = () => {
    setCount(count + 1);
  };
  
  // ✅ CORRECT – functional update (when new value depends on previous)
  const incrementSafe = () => {
    setCount(prevCount => prevCount + 1);
  };
  
  // ❌ WRONG – directly modifying
  const wrongIncrement = () => {
    count = count + 1; // React won't re-render
  };
  
  // ❌ WRONG – mutating objects/arrays directly
  const wrongUpdate = () => {
    user.name = "New Name"; // No re-render
    setUser(user); // Same object reference – React ignores
  };
  
  // ✅ CORRECT – creating new object/array
  const correctUpdate = () => {
    setUser({ ...user, name: "New Name" });
  };
  
  return <button onClick={increment}>Count: {count}</button>;
}

4. Props vs State – Complete Comparison

React Props State Data Flow Hindi mein sabse important comparison:

FeaturePropsState
Mutable?❌ No (read-only)✅ Yes
Who controls?Parent componentComponent itself
Can change?No – parent se naye props aate hainYes – using setter function
PurposePass data parent → childManage dynamic data inside component
Trigger re-render?Yes (when parent sends new props)Yes (when setState called)
Can pass to child?✅ Yes✅ Yes (as props)
Default values✅ Yes (defaultProps)✅ Yes (useState initial value)
Access in childDirectly as parameterN/A (state is local)

Visual Example:

Code
// App.js (Parent)
function App() {
  const [userName, setUserName] = useState("Rahul"); // State in parent
  
  return (
    <div>
      {/* Props pass kar rahe hain */}
      <Greeting name={userName} />
      <NameChanger onNameChange={setUserName} />
    </div>
  );
}

// Greeting.js (Child) – receives PROPS
function Greeting({ name }) {  // ← PROPS (read-only)
  // ❌ Cannot do: name = "Priya"
  return <h1>Hello, {name}</h1>;
}

// NameChanger.js (Child) – has its own STATE
function NameChanger({ onNameChange }) {
  const [inputValue, setInputValue] = useState(""); // ← STATE (mutable)
  
  return (
    <input 
      value={inputValue}  // controlled by state
      onChange={(e) => setInputValue(e.target.value)} // updating state
      onBlur={() => onNameChange(inputValue)}
    />
  );
}

5. Unidirectional Data Flow – Ek Direction Mein Data

React में data top to bottom (parent से child) flow karta hai – ek hi direction में।

Visual Representation:

Code
        App (State: user = "Rahul")
              │
              │ props (name="Rahul")
              ▼
         Header Component
              │
              │ props (userName="Rahul")
              ▼
        UserAvatar Component

Example:

Code
// Only App has state
function App() {
  const [user, setUser] = useState({ name: "Rahul", role: "Admin" });
  
  return (
    <div>
      <Header user={user} />        {/* props pass */}
      <Sidebar user={user} />       {/* props pass */}
      <Content user={user} />       {/* props pass */}
    </div>
  );
}

// Header receives props – no state here
function Header({ user }) {
  return (
    <header>
      <h1>Welcome, {user.name}</h1>
      <UserMenu user={user} />      {/* further passing */}
    </header>
  );
}

// UserMenu receives props – no state here either
function UserMenu({ user }) {
  return (
    <div className="menu">
      <span>Role: {user.role}</span>
    </div>
  );
}

Why Unidirectional?

BenefitExplanation
PredictableData ka source of truth clear hai
Debug easyPata hai data kahan se aa raha hai
No conflictsTwo-way binding se confusion nahi
PerformanceReact easily track kar sakta hai changes

6. Lifting State Up – Sibling Components Mein Data Share Karna

Problem: Do sibling components ko same data share karna hai – lekin props sirf parent→child jaate hain, siblings mein direct nahi।

Solution: State ko common parent mein rakh do – phir props ke through dono siblings mein bhejo। इसे कहते हैं Lifting State Up।

Problem Example (Without Lifting):

Code
// ❌ WRONG – siblings can't share state directly
function SearchBar() {
  const [searchTerm, setSearchTerm] = useState("");
  return <input onChange={(e) => setSearchTerm(e.target.value)} />;
}

function ResultsList() {
  // How to get searchTerm here? Can't!
  return <div>Results...</div>;
}

Solution (With Lifting State Up):

Code
// ✅ CORRECT – State in parent component
function SearchPage() {
  // State lifted UP to common parent
  const [searchTerm, setSearchTerm] = useState("");
  
  return (
    <div>
      <SearchBar 
        searchTerm={searchTerm}
        onSearchChange={setSearchTerm}
      />
      <ResultsList searchTerm={searchTerm} />
    </div>
  );
}

// Child 1 – receives state and setter as props
function SearchBar({ searchTerm, onSearchChange }) {
  return (
    <input 
      value={searchTerm}
      onChange={(e) => onSearchChange(e.target.value)}
      placeholder="Search..."
    />
  );
}

// Child 2 – receives state as props
function ResultsList({ searchTerm }) {
  const results = filterData(searchTerm);
  return (
    <ul>
      {results.map(item => <li key={item.id}>{item.name}</li>)}
    </ul>
  );
}

Real-world Example – Temperature Converter:

Code
function TemperatureConverter() {
  const [celsius, setCelsius] = useState("");
  const [fahrenheit, setFahrenheit] = useState("");
  
  // Convert celsius to fahrenheit
  const handleCelsiusChange = (value) => {
    setCelsius(value);
    if (value === "") {
      setFahrenheit("");
    } else {
      setFahrenheit((parseFloat(value) * 9/5 + 32).toString());
    }
  };
  
  // Convert fahrenheit to celsius
  const handleFahrenheitChange = (value) => {
    setFahrenheit(value);
    if (value === "") {
      setCelsius("");
    } else {
      setCelsius(((parseFloat(value) - 32) * 5/9).toString());
    }
  };
  
  return (
    <div>
      <TemperatureInput 
        scale="Celsius"
        value={celsius}
        onChange={handleCelsiusChange}
      />
      <TemperatureInput 
        scale="Fahrenheit"
        value={fahrenheit}
        onChange={handleFahrenheitChange}
      />
    </div>
  );
}

function TemperatureInput({ scale, value, onChange }) {
  return (
    <fieldset>
      <legend>Enter temperature in {scale}:</legend>
      <input 
        type="number"
        value={value}
        onChange={(e) => onChange(e.target.value)}
      />
    </fieldset>
  );
}

7. Controlled Components – Forms Handle Karna

Controlled Component = Form input jiska value React state द्वारा control किया जाता है।

Uncontrolled vs Controlled:

Code
// ❌ Uncontrolled – DOM apna value rakhta hai
function UncontrolledForm() {
  return <input type="text" />;
  // React ko value ka pata nahi – access karne ke liye ref chahiye
}

// ✅ Controlled – React control karta hai value
function ControlledForm() {
  const [value, setValue] = useState("");
  
  return (
    <input 
      type="text"
      value={value}  // React state se control
      onChange={(e) => setValue(e.target.value)}  // Update on change
    />
  );
}

Complete Form Example:

Code
import { useState } from 'react';

function RegistrationForm() {
  const [formData, setFormData] = useState({
    username: "",
    email: "",
    password: "",
    confirmPassword: "",
    age: "",
    gender: "",
    interests: [],
    termsAccepted: false
  });
  
  const [errors, setErrors] = useState({});
  
  // Generic change handler for all inputs
  const handleChange = (e) => {
    const { name, value, type, checked } = e.target;
    
    setFormData(prev => ({
      ...prev,
      [name]: type === "checkbox" ? checked : 
               type === "select-multiple" ? Array.from(e.target.selectedOptions, opt => opt.value) :
               value
    }));
    
    // Clear error for this field when user types
    if (errors[name]) {
      setErrors(prev => ({ ...prev, [name]: "" }));
    }
  };
  
  const handleSubmit = (e) => {
    e.preventDefault();
    
    // Validation
    const newErrors = {};
    if (!formData.username) newErrors.username = "Username is required";
    if (!formData.email.includes("@")) newErrors.email = "Invalid email";
    if (formData.password !== formData.confirmPassword) {
      newErrors.confirmPassword = "Passwords don't match";
    }
    
    if (Object.keys(newErrors).length > 0) {
      setErrors(newErrors);
      return;
    }
    
    console.log("Form submitted:", formData);
    alert("Registration successful!");
  };
  
  return (
    <form onSubmit={handleSubmit}>
      <div>
        <label>Username:</label>
        <input
          type="text"
          name="username"
          value={formData.username}
          onChange={handleChange}
        />
        {errors.username && <span style={{color: "red"}}>{errors.username}</span>}
      </div>
      
      <div>
        <label>Email:</label>
        <input
          type="email"
          name="email"
          value={formData.email}
          onChange={handleChange}
        />
        {errors.email && <span style={{color: "red"}}>{errors.email}</span>}
      </div>
      
      <div>
        <label>Password:</label>
        <input
          type="password"
          name="password"
          value={formData.password}
          onChange={handleChange}
        />
      </div>
      
      <div>
        <label>Gender:</label>
        <select name="gender" value={formData.gender} onChange={handleChange}>
          <option value="">Select</option>
          <option value="male">Male</option>
          <option value="female">Female</option>
          <option value="other">Other</option>
        </select>
      </div>
      
      <div>
        <label>
          <input
            type="checkbox"
            name="termsAccepted"
            checked={formData.termsAccepted}
            onChange={handleChange}
          />
          Accept Terms & Conditions
        </label>
      </div>
      
      <button type="submit">Register</button>
    </form>
  );
}

8. Prop Drilling – Problem aur Solution

Prop Drilling = Jab props ko multiple intermediate components se pass karna padta hai – even when those components don’t need the prop.

Problem Example:

Code
// ❌ Prop Drilling – User data App → Profile → Details → Avatar
// Avatar needs user, but Profile and Details don't!
function App() {
  const [user, setUser] = useState({ name: "Rahul", avatar: "image.jpg" });
  return <Profile user={user} />;
}

function Profile({ user }) {  // Doesn't need user itself
  return <Details user={user} />;  // Just passing through
}

function Details({ user }) {  // Doesn't need user itself
  return <Avatar user={user} />;  // Just passing through
}

function Avatar({ user }) {  // Actually needs user!
  return <img src={user.avatar} alt={user.name} />;
}

Solutions for Prop Drilling:

Solution 1: Component Composition

Code
// ✅ Better – pass children instead
function App() {
  const [user, setUser] = useState({ name: "Rahul", avatar: "image.jpg" });
  
  return (
    <Profile>
      <Details>
        <Avatar user={user} />
      </Details>
    </Profile>
  );
}

function Profile({ children }) {
  return <div className="profile">{children}</div>;
}

function Details({ children }) {
  return <div className="details">{children}</div>;
}

function Avatar({ user }) {
  return <img src={user.avatar} alt={user.name} />;
}

Solution 2: Context API (Advanced – next topic)

Code
// Context API – direct access, no prop drilling
const UserContext = React.createContext();

function App() {
  const [user, setUser] = useState({ name: "Rahul" });
  
  return (
    <UserContext.Provider value={user}>
      <Profile />
    </UserContext.Provider>
  );
}

function Profile() {
  return <Details />;  // No props needed!
}

function Details() {
  return <Avatar />;   // No props needed!
}

function Avatar() {
  const user = useContext(UserContext);  // Direct access!
  return <img src={user.avatar} />;
}

9. Real-world Project Examples

Example 1: Todo App (Props + State)

Code
import { useState } from 'react';

function TodoApp() {
  const [todos, setTodos] = useState([]);
  const [inputValue, setInputValue] = useState("");
  
  const addTodo = () => {
    if (inputValue.trim()) {
      setTodos([...todos, { id: Date.now(), text: inputValue, completed: false }]);
      setInputValue("");
    }
  };
  
  const toggleTodo = (id) => {
    setTodos(todos.map(todo =>
      todo.id === id ? { ...todo, completed: !todo.completed } : todo
    ));
  };
  
  const deleteTodo = (id) => {
    setTodos(todos.filter(todo => todo.id !== id));
  };
  
  return (
    <div>
      <h1>Todo App</h1>
      <div>
        <input 
          value={inputValue}
          onChange={(e) => setInputValue(e.target.value)}
          onKeyPress={(e) => e.key === 'Enter' && addTodo()}
          placeholder="Add a task..."
        />
        <button onClick={addTodo}>Add</button>
      </div>
      
      <TodoList 
        todos={todos}
        onToggle={toggleTodo}
        onDelete={deleteTodo}
      />
      
      <Stats todos={todos} />
    </div>
  );
}

function TodoList({ todos, onToggle, onDelete }) {
  if (todos.length === 0) {
    return <p>No tasks yet. Add one!</p>;
  }
  
  return (
    <ul>
      {todos.map(todo => (
        <TodoItem 
          key={todo.id}
          todo={todo}
          onToggle={onToggle}
          onDelete={onDelete}
        />
      ))}
    </ul>
  );
}

function TodoItem({ todo, onToggle, onDelete }) {
  return (
    <li style={{ textDecoration: todo.completed ? 'line-through' : 'none' }}>
      <input 
        type="checkbox"
        checked={todo.completed}
        onChange={() => onToggle(todo.id)}
      />
      <span>{todo.text}</span>
      <button onClick={() => onDelete(todo.id)}>❌</button>
    </li>
  );
}

function Stats({ todos }) {
  const total = todos.length;
  const completed = todos.filter(t => t.completed).length;
  const pending = total - completed;
  
  return (
    <div>
      <p>Total: {total} | Completed: {completed} | Pending: {pending}</p>
    </div>
  );
}

Example 2: Shopping Cart

Code
function ShoppingCart() {
  const [cart, setCart] = useState([]);
  
  const products = [
    { id: 1, name: "Laptop", price: 50000 },
    { id: 2, name: "Mouse", price: 500 },
    { id: 3, name: "Keyboard", price: 1500 }
  ];
  
  const addToCart = (product) => {
    setCart(prevCart => {
      const existing = prevCart.find(item => item.id === product.id);
      if (existing) {
        return prevCart.map(item =>
          item.id === product.id 
            ? { ...item, quantity: item.quantity + 1 }
            : item
        );
      }
      return [...prevCart, { ...product, quantity: 1 }];
    });
  };
  
  const removeFromCart = (id) => {
    setCart(prevCart => prevCart.filter(item => item.id !== id));
  };
  
  const updateQuantity = (id, quantity) => {
    if (quantity === 0) {
      removeFromCart(id);
    } else {
      setCart(prevCart =>
        prevCart.map(item =>
          item.id === id ? { ...item, quantity } : item
        )
      );
    }
  };
  
  const getTotalPrice = () => {
    return cart.reduce((total, item) => total + (item.price * item.quantity), 0);
  };
  
  return (
    <div>
      <h1>Shopping Cart</h1>
      
      <ProductList products={products} onAddToCart={addToCart} />
      
      <Cart 
        cart={cart}
        onUpdateQuantity={updateQuantity}
        onRemove={removeFromCart}
      />
      
      <h3>Total: ₹{getTotalPrice()}</h3>
    </div>
  );
}

function ProductList({ products, onAddToCart }) {
  return (
    <div>
      <h2>Products</h2>
      {products.map(product => (
        <div key={product.id}>
          <span>{product.name} - ₹{product.price}</span>
          <button onClick={() => onAddToCart(product)}>Add to Cart</button>
        </div>
      ))}
    </div>
  );
}

function Cart({ cart, onUpdateQuantity, onRemove }) {
  if (cart.length === 0) {
    return <p>Cart is empty</p>;
  }
  
  return (
    <div>
      <h2>Cart</h2>
      {cart.map(item => (
        <div key={item.id}>
          <span>{item.name} - ₹{item.price} x {item.quantity}</span>
          <button onClick={() => onUpdateQuantity(item.id, item.quantity - 1)}>-</button>
          <button onClick={() => onUpdateQuantity(item.id, item.quantity + 1)}>+</button>
          <button onClick={() => onRemove(item.id)}>Remove</button>
        </div>
      ))}
    </div>
  );
}

10. Common Mistakes + Solutions

Mistake 1: Directly mutating state

Code
// ❌ Wrong
const [user, setUser] = useState({ name: "Vivek" });
user.name = "Deepti"; // No re-render
setUser(user); // Same reference – React ignores

// ✅ Correct
setUser({ ...user, name: "Deepti" });

Mistake 2: Using state value immediately after setState

Code
// ❌ Wrong
setCount(count + 1);
console.log(count);  // Still old value!

// ✅ Correct
setCount(count + 1);
useEffect(() => {
  console.log(count);  // New value after re-render
}, [count]);

// OR use functional update
setCount(prev => {
  const newValue = prev + 1;
  console.log(newValue);  // New value immediately
  return newValue;
});

Mistake 3: Modifying props

Code
// ❌ Wrong
function Child({ user }) {
  user.name = "New Name";  // ERROR – props are read-only
  return <h1>{user.name}</h1>;
}

// ✅ Correct – copy and then modify
function Child({ user, onUpdate }) {
  const handleUpdate = () => {
    onUpdate({ ...user, name: "New Name" });
  };
  return <button onClick={handleUpdate}>Update</button>;
}
Code
// ❌ Warning: Each child needs unique key
{todos.map(todo => <li>{todo.text}</li>)}

// ✅ Correct
{todos.map(todo => <li key={todo.id}>{todo.text}</li>)}

11. Quick Cheat Sheet

ConceptSyntaxExample
Props<Child prop={value} /><User name="Rahul" />
Props Destructuringfunction Child({ prop })function User({ name })
Default Propsfunction Child({ name = "Guest" })function Greeting({ name = "Guest" })
Children Prop{children}<Card><h1>Title</h1></Card>
useStateconst [val, setVal] = useState(init)const [count, setCount] = useState(0)
Update ArraysetArr([...arr, newItem])setTodos([...todos, newTodo])
Update ObjectsetObj({ ...obj, key: newValue })setUser({ ...user, name: "New" })
Functional UpdatesetVal(prev => prev + 1)setCount(c => c + 1)
Lifting StateState in parent, props to childrenTemperatureConverter example
Controlled Inputvalue={state} + onChange={setState}<input value={name} onChange={e => setName(e.target.value)} />

12. FAQ

Q1: React Props State Data Flow Hindi में सबसे important rule क्या है?
Props read-only हैं, State mutable है। Data always top to bottom flow karta है (parent → child).

Q2: State change hone par kya hota hai?
Component re-render hota hai – React automatically UI update kar deta hai।

Q3: Kya main props ko change kar sakta hoon?
Nahi! Props are immutable (read-only). Agar change karna hai toh parent component mein change करो.

Q4: State ko child component mein kaise bhejein?
Props ke through: <Child value={state} onUpdate={setState} />

Q5: Sibling components ke beech data kaise share karein?
Lifting state up – common parent mein state rakho, phir props se dono siblings mein bhejo।

Q6: setState async kyun hai?
Performance ke liye। React multiple setState calls को batch करके ek saath process karta hai।

Q7: Object/array state update kaise karein?
New object/array create करो (spread operator ... use करो) – direct mutate mat करो।

Q8: Prop drilling se kaise bachein?
Context API, Redux, ya component composition (children prop) use करो।

Q9: Controlled vs Uncontrolled components – kya use karein?
Controlled components preferred हैं – React state single source of truth रहता है।

Q10: Kya ek component mein multiple states ho sakti hain?
Haan! useState multiple baar call कर सकते हो। Ya ek object state bana सकते हो।


13. Conclusion

बहुत बढ़िया दोस्तों! आज हमने React Props and State Data Flow Hindi को पूरी detail में समझा।

Quick Recap:

ConceptKey Takeaway
PropsParent → Child data (read-only)
StateComponent ka apna memory (mutable)
Data FlowUnidirectional – top to bottom
Lifting State UpSiblings ke liye common parent mein state
Controlled ComponentsForm inputs controlled by React state

Mera personal experience:

जब मैंने पहली बार props and state समझा, तो मुझे लगा – “इतना simple है React?”। लेकिन जब lifting state up और prop drilling जैसे real scenarios आए, तो थोड़ा मुश्किल लगा। Practice के 2-3 projects के बाद sab clear हो गया।

Tum bhi ye projects zaroor karo:

  1. ✅ Counter App
  2. ✅ Todo App
  3. ✅ Temperature Converter
  4. ✅ Shopping Cart

अब तुम्हारी बारी है!

नीचे comment में बताओ:

  1. तुम्हें props ज्यादा easy लगे या state?
  2. क्या तुमने कभी lifting state up use kiya है?

The Easy Master पर बने रहो। Happy Coding! ⚛️🚀


Resources

Additional Resources

TheEasyMaster

Author at The Easy Master.

Previous
React.js Kya Hai? JSX aur Components Samjhe – Beginner Guide 2026
Next
सरल React Hooks: useState and useEffect का आसान गाइड 2026

Related posts

Leave a Reply

Your email address will not be published. Required fields are marked *