<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: vishwa v</title>
    <description>The latest articles on DEV Community by vishwa v (@vishwa_v_04111c0586f440b6).</description>
    <link>https://dev.to/vishwa_v_04111c0586f440b6</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3958528%2F34410a54-341f-4dac-a152-9f2e78711d8d.jpeg</url>
      <title>DEV Community: vishwa v</title>
      <link>https://dev.to/vishwa_v_04111c0586f440b6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vishwa_v_04111c0586f440b6"/>
    <language>en</language>
    <item>
      <title>react(useEffect)</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Wed, 02 Sep 2026 18:54:09 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/reactuseeffect-43di</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/reactuseeffect-43di</guid>
      <description>&lt;p&gt;&lt;strong&gt;What does render mean in React?&lt;/strong&gt;&lt;br&gt;
Render = React drawing your component’s UI on the screen.&lt;/p&gt;

&lt;p&gt;Every time React needs to show something new (like updated text, a new list item, or a changed button state), it re-runs your component function and updates the DOM (the browser’s page structure).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When does a render happen?&lt;/strong&gt;&lt;br&gt;
Initial render → when the component first appears on the page.&lt;br&gt;
Example: opening your app → React draws .&lt;/p&gt;

&lt;p&gt;Re-render → whenever state or props change.&lt;br&gt;
Example: typing in the input → text state changes → React redraws the input with the new value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why useEffect&lt;/strong&gt;&lt;br&gt;
useEffect is not about re-rendering — it’s about running side effects after React finishes rendering.&lt;/p&gt;

&lt;p&gt;State (useState) → controls your component’s data and triggers re-renders.&lt;/p&gt;

&lt;p&gt;Effect (useEffect) → lets you run extra code after the render happens.&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;/p&gt;

&lt;p&gt;useState = “React, redraw my component with new data.”&lt;/p&gt;

&lt;p&gt;useEffect = “React, after you finish drawing, also do this extra work.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;diff blw useEffect and useState&lt;/strong&gt;&lt;br&gt;
Rendering with useState:&lt;br&gt;
Whenever you call setState (like setText), React must re-run your component function to update the UI.&lt;/p&gt;

&lt;p&gt;Even if the change is small (like typing one letter), React redraws the component.&lt;/p&gt;

&lt;p&gt;For a big component with lots of code, yes, React has to go through all of it again — but React is optimized to only update the parts of the DOM that actually changed. So it’s not as “heavy” as it sounds.&lt;/p&gt;

&lt;p&gt;Where useEffect fits:&lt;br&gt;
useEffect does not reduce rendering time.&lt;/p&gt;

&lt;p&gt;Instead, it’s a place to put side effects (things outside the normal UI update, like fetching data, logging, timers, subscriptions).&lt;/p&gt;

&lt;p&gt;The key difference:&lt;/p&gt;

&lt;p&gt;useState → triggers re-render when data changes.&lt;/p&gt;

&lt;p&gt;useEffect → runs extra code after React finishes rendering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cases&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;No dependency array&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;jsx&lt;/span&gt;
&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Runs after every render&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runs after every render, no matter what changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Empty dependency array []&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;jsx&lt;/span&gt;
&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Runs only once (on mount)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runs only once when the component first loads (like componentDidMount).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With specific dependencies&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&gt;jsx&lt;/span&gt;
&lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Text changed:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Runs only when text changes.&lt;br&gt;
If you type in the input, it logs. If something else re-renders but text didn’t change, it won’t run.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>react-3</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Wed, 02 Sep 2026 10:01:12 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/react-3-384c</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/react-3-384c</guid>
      <description>&lt;p&gt;&lt;strong&gt;React Props&lt;/strong&gt;&lt;br&gt;
Props are arguments passed into React components.&lt;/p&gt;

&lt;p&gt;Props are passed to components via HTML attributes.&lt;/p&gt;

&lt;p&gt;example:&lt;br&gt;
Yesterday&lt;br&gt;
i going to practise useeffect hook in react could u teach me with an example&lt;br&gt;
Perfect choice, Saran! The useEffect hook is one of the most important concepts in React because it lets you run side effects (like fetching data, updating the DOM, or setting up timers) after your component renders. Let’s walk through a simple example step by step.&lt;/p&gt;

&lt;p&gt;🧑‍💻 Example: Updating the document title with useEffect&lt;br&gt;
jsx&lt;br&gt;
import React, { useState, useEffect } from "react";&lt;/p&gt;

&lt;p&gt;function Counter() {&lt;br&gt;
  const [count, setCount] = useState(0);&lt;/p&gt;

&lt;p&gt;// useEffect runs after every render&lt;br&gt;
  useEffect(() =&amp;gt; {&lt;br&gt;
    document.title = &lt;code&gt;You clicked ${count} times&lt;/code&gt;;&lt;br&gt;
  }, [count]); // dependency array&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
      &lt;p&gt;You clicked {count} times&lt;/p&gt;
&lt;br&gt;
       setCount(count + 1)}&amp;gt;&lt;br&gt;
        Click me&lt;br&gt;
      &lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;export default Counter;&lt;br&gt;
🔍 Explanation&lt;br&gt;
useState(0) → creates a state variable count.&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; { ... }, [count]) → runs the effect whenever count changes.&lt;/p&gt;

&lt;p&gt;Inside the effect, we update the document title with the latest count.&lt;/p&gt;

&lt;p&gt;The dependency array [count] ensures the effect runs only when count changes, not on every render.&lt;/p&gt;

&lt;p&gt;⚡ Key Points&lt;br&gt;
If you leave the dependency array empty [], the effect runs only once (like componentDidMount).&lt;/p&gt;

&lt;p&gt;If you omit the array, the effect runs after every render.&lt;/p&gt;

&lt;p&gt;You can also clean up side effects (like removing event listeners or stopping timers) by returning a function inside useEffect.&lt;/p&gt;

&lt;p&gt;👉 Want me to show you a cleanup example (like setting up and clearing an interval), or should we stick to simple state updates for now?&lt;/p&gt;

&lt;p&gt;React useEffect Scenario-Based Questions&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Run Only Once&lt;br&gt;
Print "Components Mounted" only once when page loads.- How will you write useEffect?- What should be in dependency array? Why?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run on Every Render&lt;br&gt;
Print "Rendered" on every render.- How will you write useEffect?- What happens if dependency array is not provided?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run When State Changes&lt;br&gt;
const [count, setCount] = useState(0);&lt;br&gt;
Log "Count changed" only when count changes.- What should dependency array contain?- What happens if it is empty []?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Two States, One Effect&lt;br&gt;
const [count, setCount] = useState(0);&lt;br&gt;
const [name, setName] = useState("");&lt;br&gt;
Run effect when count OR name changes.- How will dependency array look?- What if only count is added?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Derived Logic&lt;br&gt;
Show "Even Number" whenever count becomes even.- Should this logic be inside render or useEffect? Why?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;API Call on Mount&lt;br&gt;
Fetch users when component loads.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why do we use []?- What happens if we remove []?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Infinite Loop Trap&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
setCount(count + 1);&lt;br&gt;
}, [count]);- What will happen?- Why does this cause infinite re-render?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix the Infinite Loop- How can you increment count only once using useEffect?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Document Title Sync&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
document.title = count;&lt;br&gt;
}, [?]);- What should go inside ? Why?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cleanup Basic&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
window.addEventListener("click", handleClick);&lt;br&gt;
});- What problem may happen?- How to fix properly?- When does cleanup run&lt;br&gt;
Great set of scenario-based questions, Saran! Let’s go through each one clearly and step by step:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run Only Once&lt;br&gt;
jsx&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
console.log("Component Mounted");&lt;br&gt;
}, []);&lt;br&gt;
Dependency array: []&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Why: Empty array means the effect runs only once after the first render (like componentDidMount).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run on Every Render
jsx
useEffect(() =&amp;gt; {
console.log("Rendered");
});
Dependency array: Not provided.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What happens: Effect runs after every render, because React has no dependencies to check.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run When State Changes
jsx
const [count, setCount] = useState(0);&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
  console.log("Count changed");&lt;br&gt;
}, [count]);&lt;br&gt;
Dependency array: [count]&lt;/p&gt;

&lt;p&gt;If empty []: Effect runs only once on mount, not when count changes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Two States, One Effect
jsx
const [count, setCount] = useState(0);
const [name, setName] = useState("");&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
  console.log("Count or Name changed");&lt;br&gt;
}, [count, name]);&lt;br&gt;
Dependency array: [count, name]&lt;/p&gt;

&lt;p&gt;If only [count]: Effect runs only when count changes, not when name changes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Derived Logic
Show "Even Number" when count is even.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;✅ Best place: Inside render, not useEffect.&lt;/p&gt;

&lt;p&gt;Reason: It’s a pure derived value from state, no side effect needed.&lt;/p&gt;

&lt;p&gt;jsx&lt;/p&gt;

&lt;p&gt;{count % 2 === 0 ? "Even Number" : "Odd Number"}&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;API Call on Mount
jsx
useEffect(() =&amp;gt; {
fetch("/api/users")
.then(res =&amp;gt; res.json())
.then(data =&amp;gt; console.log(data));
}, []);
Why []: Runs only once when component loads.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If removed: API call runs on every render, causing repeated requests.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Infinite Loop Trap
jsx
useEffect(() =&amp;gt; {
setCount(count + 1);
}, [count]);
What happens: Each time count changes, effect runs → updates count again → triggers another render → endless loop.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Why: State update inside effect depends on the same state in dependency array.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Fix the Infinite Loop&lt;br&gt;
jsx&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
setCount(count + 1);&lt;br&gt;
}, []);&lt;br&gt;
✅ Runs only once on mount, increments count a single time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Document Title Sync&lt;br&gt;
jsx&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
document.title = count;&lt;br&gt;
}, [count]);&lt;br&gt;
Dependency array: [count]&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Why: Title should update whenever count changes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cleanup Basic
jsx
useEffect(() =&amp;gt; {
window.addEventListener("click", handleClick);&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;return () =&amp;gt; {&lt;br&gt;
    window.removeEventListener("click", handleClick);&lt;br&gt;
  };&lt;br&gt;
}, []);&lt;br&gt;
Problem if no cleanup: Multiple event listeners get added on every render → memory leaks, duplicate calls.&lt;/p&gt;

&lt;p&gt;Fix: Return a cleanup function.&lt;/p&gt;

&lt;p&gt;When cleanup runs: Before component unmounts, and before re-running the effect if dependencies change.&lt;/p&gt;

&lt;p&gt;🔥 That’s the full breakdown! Each scenario shows how the dependency array controls when useEffect runs.&lt;/p&gt;

&lt;p&gt;Would you like me to also create a practice quiz (multiple-choice style) on these scenarios so you can test yourself interactively?&lt;/p&gt;

&lt;p&gt;i dont get it code is very less or u just giving only useeffect code&lt;br&gt;
Got it, Saran — you want full working examples, not just the useEffect snippet. Let’s expand each scenario into a complete React component so you can actually run and practice them.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run Only Once (Mounted)
jsx
import React, { useEffect } from "react";&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function App() {&lt;br&gt;
  useEffect(() =&amp;gt; {&lt;br&gt;
    console.log("Component Mounted");&lt;br&gt;
  }, []); // empty array → runs only once&lt;/p&gt;

&lt;p&gt;return &lt;/p&gt;
&lt;h1&gt;Hello World&lt;/h1&gt;;&lt;br&gt;
}

&lt;p&gt;export default App;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run on Every Render
jsx
import React, { useState, useEffect } from "react";&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const [text, setText] = useState("");&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
    console.log("Rendered");&lt;br&gt;
  }); // no dependency array → runs every render&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    
      value={text}&lt;br&gt;
      onChange={(e) =&amp;gt; setText(e.target.value)}&lt;br&gt;
      placeholder="Type something"&lt;br&gt;
    /&amp;gt;&lt;br&gt;
  );&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;export default App;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run When State Changes
jsx
import React, { useState, useEffect } from "react";&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const [count, setCount] = useState(0);&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
    console.log("Count changed");&lt;br&gt;
  }, [count]); // runs only when count changes&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
     setCount(count + 1)}&amp;gt;&lt;br&gt;
      Count: {count}&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;export default App;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Two States, One Effect
jsx
import React, { useState, useEffect } from "react";&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const [count, setCount] = useState(0);&lt;br&gt;
  const [name, setName] = useState("");&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
    console.log("Count or Name changed");&lt;br&gt;
  }, [count, name]); // runs when either changes&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
       setCount(count + 1)}&amp;gt;Count: {count}&lt;br&gt;
      
        value={name}&lt;br&gt;
        onChange={(e) =&amp;gt; setName(e.target.value)}&lt;br&gt;
        placeholder="Enter name"&lt;br&gt;
      /&amp;gt;&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;export default App;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Derived Logic (Even Number)
jsx
import React, { useState } from "react";&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const [count, setCount] = useState(0);&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;br&gt;
       setCount(count + 1)}&amp;gt;Count: {count}&lt;br&gt;
      &lt;p&gt;{count % 2 === 0 ? "Even Number" : "Odd Number"}&lt;/p&gt;
&lt;br&gt;
    &lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;export default App;&lt;br&gt;
👉 Derived values belong in render, not useEffect.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;API Call on Mount
jsx
import React, { useEffect, useState } from "react";&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const [users, setUsers] = useState([]);&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
    fetch("&lt;a href="https://jsonplaceholder.typicode.com/users%22" rel="noopener noreferrer"&gt;https://jsonplaceholder.typicode.com/users"&lt;/a&gt;)&lt;br&gt;
      .then(res =&amp;gt; res.json())&lt;br&gt;
      .then(data =&amp;gt; setUsers(data));&lt;br&gt;
  }, []); // only once&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;
&lt;ul&gt;

      {users.map(user =&amp;gt; &lt;li&gt;{user.name}&lt;/li&gt;)}
    &lt;/ul&gt;
&lt;br&gt;
  );&lt;br&gt;
}

&lt;p&gt;export default App;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Infinite Loop Trap&lt;br&gt;
jsx&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
setCount(count + 1);&lt;br&gt;
}, [count]); // ❌ infinite loop&lt;br&gt;
Each update triggers another render → endless cycle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix Infinite Loop&lt;br&gt;
jsx&lt;br&gt;
useEffect(() =&amp;gt; {&lt;br&gt;
setCount(count + 1);&lt;br&gt;
}, []); // ✅ runs only once&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Document Title Sync&lt;br&gt;
jsx&lt;br&gt;
import React, { useState, useEffect } from "react";&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const [count, setCount] = useState(0);&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
    document.title = count;&lt;br&gt;
  }, [count]); // updates only when count changes&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
     setCount(count + 1)}&amp;gt;Count: {count}&lt;br&gt;
  );&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;export default App;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cleanup Basic
jsx
import React, { useEffect } from "react";&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;function App() {&lt;br&gt;
  const handleClick = () =&amp;gt; {&lt;br&gt;
    console.log("Window clicked");&lt;br&gt;
  };&lt;/p&gt;

&lt;p&gt;useEffect(() =&amp;gt; {&lt;br&gt;
    window.addEventListener("click", handleClick);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return () =&amp;gt; {
  window.removeEventListener("click", handleClick);
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}, []); // cleanup runs on unmount&lt;/p&gt;

&lt;p&gt;return &lt;/p&gt;
&lt;h1&gt;Click anywhere&lt;/h1&gt;;&lt;br&gt;
}

&lt;p&gt;export default App;&lt;br&gt;
✨ Now you have full runnable components for each scenario. You can copy-paste them into a React project and see the behavior directly.&lt;/p&gt;

&lt;p&gt;Would you like me to bundle these into a single playground file with buttons to switch between scenarios, so you can test them all in one app instead of separate files?&lt;/p&gt;

&lt;p&gt;Windows PowerShell&lt;br&gt;
Copyright (C) Microsoft Corporation. All rights reserved.&lt;/p&gt;

&lt;p&gt;PS C:\Users\saran\OneDrive\Desktop\pp-1\javascript\New folder&amp;gt; npm run dev&lt;br&gt;
npm error Missing script: "dev"&lt;br&gt;
npm error&lt;br&gt;
npm error To see a list of scripts, run:&lt;br&gt;
npm error   npm run&lt;br&gt;
npm error A complete log of this run can be found in: C:\Users\saran\AppData\Local\npm-cache_logs\2026-09-02T16_22_08_013Z-debug-0.log&lt;br&gt;
PS C:\Users\saran\OneDrive\Desktop\pp-1\javascript\New folder&amp;gt; if i run this&lt;br&gt;
The error means your project doesn’t have a "dev" script defined in its package.json file, so when you run npm run dev, npm doesn’t know what to execute.&lt;/p&gt;

&lt;p&gt;Here’s how to fix it depending on how you set up your React project:&lt;/p&gt;

&lt;p&gt;✅ If you used Vite (recommended for React)&lt;br&gt;
Open your project folder.&lt;/p&gt;

&lt;p&gt;Check package.json. You should see something like:&lt;/p&gt;

&lt;p&gt;json&lt;br&gt;
"scripts": {&lt;br&gt;
  "dev": "vite",&lt;br&gt;
  "build": "vite build",&lt;br&gt;
  "preview": "vite preview"&lt;br&gt;
}&lt;br&gt;
If "dev": "vite" is missing, add it under "scripts".&lt;/p&gt;

&lt;p&gt;Then run:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
npm run dev&lt;br&gt;
This will start the Vite development server.&lt;/p&gt;

&lt;p&gt;✅ If you used Create React App&lt;br&gt;
In package.json, scripts look like:&lt;/p&gt;

&lt;p&gt;json&lt;br&gt;
"scripts": {&lt;br&gt;
  "start": "react-scripts start",&lt;br&gt;
  "build": "react-scripts build",&lt;br&gt;
  "test": "react-scripts test"&lt;br&gt;
}&lt;br&gt;
In this case, you should run:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
npm start&lt;br&gt;
(not npm run dev).&lt;/p&gt;

&lt;p&gt;🔍 How to check quickly&lt;br&gt;
Run:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
npm run&lt;br&gt;
This will list all available scripts in your project. Use whichever matches (dev, start, etc.).&lt;/p&gt;

&lt;p&gt;👉 Since you’re practicing React, did you create this project using Vite or Create React App? That will decide whether you should run npm run dev or npm start.&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "name": "use",&lt;br&gt;
  "private": true,&lt;br&gt;
  "version": "0.0.0",&lt;br&gt;
  "type": "module",&lt;br&gt;
  "scripts": {&lt;br&gt;
    "dev": "vite",&lt;br&gt;
    "build": "vite build",&lt;br&gt;
    "lint": "eslint .",&lt;br&gt;
    "preview": "vite preview"&lt;br&gt;
  },&lt;br&gt;
  "dependencies": {&lt;br&gt;
    "react": "^19.2.8",&lt;br&gt;
    "react-dom": "^19.2.8"&lt;br&gt;
  },&lt;br&gt;
  "devDependencies": {&lt;br&gt;
    "@eslint/js": "^10.0.1",&lt;br&gt;
    "@types/react": "^19.2.18",&lt;br&gt;
    "@types/react-dom": "^19.2.4",&lt;br&gt;
    "@vitejs/plugin-react": "^6.1.0",&lt;br&gt;
    "eslint": "^10.9.0",&lt;br&gt;
    "eslint-plugin-react-hooks": "^7.1.1",&lt;br&gt;
    "eslint-plugin-react-refresh": "^0.5.4",&lt;br&gt;
    "globals": "^17.11.0",&lt;br&gt;
    "vite": "^8.2.2"&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
Thanks for sharing your package.json, Saran — that clears things up.&lt;/p&gt;

&lt;p&gt;Your project does have a "dev": "vite" script defined, so npm run dev should normally work. The error you saw (Missing script: "dev") usually happens if:&lt;/p&gt;

&lt;p&gt;Wrong folder → You must run the command inside the folder where package.json is located.&lt;/p&gt;

&lt;p&gt;In your case:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
cd "C:\Users\saran\OneDrive\Desktop\pp-1\javascript\New folder"&lt;br&gt;
npm run dev&lt;br&gt;
Typo in command → Make sure you type exactly:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
npm run dev&lt;br&gt;
(no extra spaces or quotes).&lt;/p&gt;

&lt;p&gt;Node modules missing → If you haven’t installed dependencies yet, run:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
npm install&lt;br&gt;
Then try npm run dev again.&lt;/p&gt;

&lt;p&gt;Quick Checklist&lt;br&gt;
✅ Confirm you’re inside the correct folder (New folder).&lt;/p&gt;

&lt;p&gt;✅ Run npm install once to install dependencies.&lt;/p&gt;

&lt;p&gt;✅ Then run npm run dev to start the Vite server.&lt;/p&gt;

&lt;p&gt;If everything is set up, you should see something like:&lt;/p&gt;

&lt;p&gt;Code&lt;br&gt;
VITE v8.2.2  ready in 300ms&lt;br&gt;
Local:   &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt;&lt;br&gt;
Network: use --host to expose&lt;br&gt;
👉 Do you want me to guide you step‑by‑step on how to open your React app in the browser after running npm run dev?&lt;/p&gt;

&lt;p&gt;i done it but in ui this site cant be reached is showing&lt;br&gt;
If your terminal shows Vite starting but the browser says “This site can’t be reached”, here are the common fixes:&lt;/p&gt;

&lt;p&gt;🔍 Step 1: Check the terminal output&lt;br&gt;
When you run:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
npm run dev&lt;br&gt;
Vite should print something like:&lt;/p&gt;

&lt;p&gt;Code&lt;br&gt;
Local:   &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt;&lt;br&gt;
Network: use --host to expose&lt;br&gt;
👉 Copy the Local URL (usually &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt;) and paste it directly into your browser.&lt;/p&gt;

&lt;p&gt;🔍 Step 2: Make sure the server is running&lt;br&gt;
Keep the PowerShell window open. If you close it, the dev server stops.&lt;/p&gt;

&lt;p&gt;If you see errors instead of the Vite banner, share them — they’ll explain why the server didn’t start.&lt;/p&gt;

&lt;p&gt;🔍 Step 3: Port issues&lt;br&gt;
Sometimes port 5173 is blocked or already in use.&lt;/p&gt;

&lt;p&gt;Try running:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
npm run dev -- --port 3000&lt;br&gt;
Then open &lt;a href="http://localhost:3000/" rel="noopener noreferrer"&gt;http://localhost:3000/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;🔍 Step 4: Browser/Firewall&lt;br&gt;
Ensure you’re opening the URL in a modern browser (Edge, Chrome, Firefox).&lt;/p&gt;

&lt;p&gt;If you’re on a corporate or school network, firewall rules may block localhost. Try another port as in Step 3.&lt;/p&gt;

&lt;p&gt;🔍 Step 5: Verify project structure&lt;br&gt;
Your project should have:&lt;/p&gt;

&lt;p&gt;index.html at the root&lt;/p&gt;

&lt;p&gt;src/main.jsx (or .tsx) as entry point&lt;/p&gt;

&lt;p&gt;package.json with "dev": "vite"&lt;/p&gt;

&lt;p&gt;If index.html is missing or misconfigured, Vite will start but the browser won’t load correctly.&lt;/p&gt;

&lt;p&gt;⚡ Quick test: After running npm run dev, what exact URL does Vite show in your terminal? If you paste that into the browser and it still fails, we’ll try changing the port or checking your index.html.&lt;/p&gt;

&lt;p&gt;Would you like me to walk you through creating a minimal Vite React app from scratch (just a few commands) so you can confirm your setup works before debugging your current folder?&lt;/p&gt;

&lt;p&gt;import { useState } from "react";&lt;/p&gt;

&lt;p&gt;function Skill() {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [skills, setSkills] = useState([])

function handleChange(e) {

    if (e.target.checked) {
        setSkills([...skills, e.target.value])
    } else {
        setSkills(skills.filter((skill) =&amp;gt; e.target.value != skill))
    }



}





return (
    &amp;lt;div&amp;gt;
        {

        &amp;lt;input type="checkbox" value={"sql"} onChange={handleChange} /&amp;gt;sql &amp;lt;br /&amp;gt;
        &amp;lt;input type="checkbox" value={"java"} onChange={handleChange} /&amp;gt;java

        &amp;lt;h2&amp;gt;
            {
                skills.map((skill) =&amp;gt; (
                    &amp;lt;h1&amp;gt;{skill}&amp;lt;/h1&amp;gt;
                )
                )
            }
        &amp;lt;/h2&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
        &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;export default skill;&lt;br&gt;
I see what you’re trying to do, Saran — you’re building a checkbox list that updates state and displays selected skills. Nice start! But there are a couple of issues in your code:&lt;/p&gt;

&lt;p&gt;🔎 Problems&lt;br&gt;
Component export name mismatch&lt;br&gt;&lt;br&gt;
You wrote export default skill; but your component is named Skill. React components must start with a capital letter, and the export should match:&lt;/p&gt;

&lt;p&gt;jsx&lt;br&gt;
export default Skill;&lt;br&gt;
Nested &lt;/p&gt;
&lt;h1&gt; inside &lt;/h1&gt;
&lt;h2&gt;
&lt;br&gt;&lt;br&gt;
You’re mapping skills into &lt;/h2&gt;
&lt;h1&gt; tags inside an &lt;/h1&gt;
&lt;h2&gt;. That’s invalid HTML nesting. Better to use &lt;/h2&gt;
&lt;li&gt; inside a &lt;ul&gt; or just &lt;p&gt;.&lt;/p&gt;

&lt;p&gt;Variable naming consistency&lt;br&gt;&lt;br&gt;
In your map, you’re fine, but make sure you don’t accidentally mismatch case (like isON vs isOn in your earlier code).&lt;/p&gt;

&lt;p&gt;✅ Fixed Code&lt;br&gt;
Here’s a corrected version you can run:&lt;/p&gt;

&lt;p&gt;jsx&lt;br&gt;
import { useState } from "react";&lt;/p&gt;

&lt;p&gt;function Skill() {&lt;br&gt;
  const [skills, setSkills] = useState([]);&lt;/p&gt;

&lt;p&gt;function handleChange(e) {&lt;br&gt;
    if (e.target.checked) {&lt;br&gt;
      setSkills([...skills, e.target.value]);&lt;br&gt;
    } else {&lt;br&gt;
      setSkills(skills.filter((skill) =&amp;gt; skill !== e.target.value));&lt;br&gt;
    }&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;return (&lt;br&gt;
    &lt;/p&gt;

       SQL 
       Java

&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  &amp;lt;h2&amp;gt;Selected Skills:&amp;lt;/h2&amp;gt;
  &amp;lt;ul&amp;gt;
    {skills.map((skill) =&amp;gt; (
      &amp;lt;li key={skill}&amp;gt;{skill}&amp;lt;/li&amp;gt;
    ))}
  &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;export default Skill;&lt;br&gt;
🧠 What Changed&lt;br&gt;
Export fixed → export default Skill;&lt;/p&gt;

&lt;p&gt;Used &lt;/p&gt;
&lt;ul&gt;&lt;li&gt; for listing skills (cleaner HTML).

&lt;p&gt;Added key={skill} in .map() (React requires unique keys for lists).&lt;/p&gt;

&lt;p&gt;Simplified comparison → skill !== e.target.value.&lt;/p&gt;

&lt;p&gt;⚡ Now when you tick/untick checkboxes, the selected skills will appear in a list below.&lt;/p&gt;

&lt;p&gt;Do you want me to extend this example to show dynamic checkboxes from an array (instead of hardcoding SQL/Java), so you can easily add more skills later?&lt;/p&gt;

&lt;p&gt;import React from 'react'&lt;/p&gt;

&lt;p&gt;function Component() {&lt;br&gt;
  useEffect(() =&amp;gt; {&lt;br&gt;
  console.log("Component Mounted");&lt;br&gt;
}, []);&lt;/p&gt;

&lt;p&gt;return &lt;/p&gt;
&lt;h1&gt;Hello World&lt;/h1&gt;;
}

&lt;p&gt;export default Component&lt;br&gt;
You’re very close, Saran! The issue is that you’re using useEffect but haven’t imported it. In React, hooks like useEffect must be explicitly imported from "react". Also, make sure your component name and export match.&lt;/p&gt;

&lt;p&gt;Here’s the corrected version:&lt;/p&gt;

&lt;p&gt;jsx&lt;br&gt;
import React, { useEffect } from "react";&lt;/p&gt;

&lt;p&gt;function Component() {&lt;br&gt;
  useEffect(() =&amp;gt; {&lt;br&gt;
    console.log("Component Mounted");&lt;br&gt;
  }, []); // runs only once when component mounts&lt;/p&gt;

&lt;p&gt;return &lt;/p&gt;
&lt;h1&gt;Hello World&lt;/h1&gt;;
}

&lt;p&gt;export default Component;&lt;br&gt;
🔍 What Changed&lt;br&gt;
Added useEffect to the import:&lt;/p&gt;

&lt;p&gt;jsx&lt;br&gt;
import React, { useEffect } from "react";&lt;br&gt;
Kept the dependency array [] so the effect runs only once (like componentDidMount).&lt;/p&gt;

&lt;p&gt;Export matches the component name: export default Component;.&lt;/p&gt;

&lt;p&gt;⚡ Now when you run this, you’ll see “Component Mounted” logged in the browser console once when the component loads.&lt;/p&gt;

&lt;p&gt;Do you want me to extend this example to also show a cleanup function (like setting up and removing an event listener), so you can see how useEffect handles mounting and unmounting?&lt;/p&gt;

&lt;p&gt;in my browser showing this This localhost page can’t be found&lt;br&gt;
No webpage was found for the web address: &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt;&lt;br&gt;
HTTP ERROR 404&lt;br&gt;
A 404 error on &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt; means the Vite dev server is running, but it can’t find your app’s entry point. Let’s troubleshoot step by step:&lt;/p&gt;

&lt;p&gt;✅ Step 1: Check your project structure&lt;br&gt;
Your folder should look like this:&lt;/p&gt;

&lt;p&gt;Code&lt;br&gt;
New folder/&lt;br&gt;
  ├── index.html&lt;br&gt;
  ├── package.json&lt;br&gt;
  ├── vite.config.js&lt;br&gt;
  └── src/&lt;br&gt;
      ├── main.jsx&lt;br&gt;
      └── App.jsx&lt;br&gt;
index.html must be in the root (same level as package.json).&lt;/p&gt;

&lt;p&gt;Inside index.html, you should have:&lt;/p&gt;

&lt;p&gt;html&lt;/p&gt;

&lt;p&gt;✅ Step 2: Check main.jsx&lt;br&gt;
This file should mount your React app:&lt;/p&gt;

&lt;p&gt;jsx&lt;br&gt;
import React from "react";&lt;br&gt;
import ReactDOM from "react-dom/client";&lt;br&gt;
import App from "./App.jsx";&lt;/p&gt;

&lt;p&gt;ReactDOM.createRoot(document.getElementById("root")).render(&lt;br&gt;
  &lt;br&gt;
    &lt;br&gt;
  &lt;br&gt;
);&lt;br&gt;
✅ Step 3: Run again&lt;br&gt;
Stop the current server (Ctrl + C in PowerShell).&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;powershell&lt;br&gt;
npm run dev&lt;br&gt;
Open the exact Local URL Vite shows (e.g., &lt;a href="http://localhost:5173/" rel="noopener noreferrer"&gt;http://localhost:5173/&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;⚠️ Common causes of 404&lt;br&gt;
index.html is missing or not in the root.&lt;/p&gt;


&lt;p&gt;The  path is wrong.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You opened the wrong URL (make sure you use the one Vite prints in the terminal).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You moved files into a subfolder but didn’t update paths.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 Quick check: Do you have an index.html file in your project root? If not, I can show you the minimal index.html you need to create so Vite can serve your React app.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;import React, { useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Component() {&amp;lt;br&amp;gt;&lt;br&gt;
  useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Component Mounted&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }, []); // runs only once when component mounts&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return &amp;lt;h1&amp;gt;Hello World&amp;lt;/h1&amp;gt;;&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default Component why we using useeffect in this and whats the purpose of the project&amp;lt;br&amp;gt;&lt;br&gt;
Great question, Saran! Let’s break it down clearly:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🎯 Why we use useEffect here&amp;lt;br&amp;gt;&lt;br&gt;
In React, useEffect lets you run side effects after the component renders.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;A side effect is anything that happens outside the normal rendering of JSX — like logging, fetching data, updating the DOM, setting timers, or adding event listeners.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;In your example:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Component Mounted&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
This runs only once when the component first loads (because of the empty dependency array []).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;It’s similar to the old componentDidMount lifecycle method in class components.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;So here, the purpose is simply to demonstrate that useEffect can run code when the component mounts — in this case, logging &amp;amp;quot;Component Mounted&amp;amp;quot; to the console.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;📌 What’s the purpose of this project?&amp;lt;br&amp;gt;&lt;br&gt;
Right now, your project is just a practice playground:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You’re learning how useEffect works in different scenarios.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This small component doesn’t have a “real-world” purpose yet — it’s mainly for training yourself to understand React hooks.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Later, you’ll use useEffect for practical tasks like:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Fetching data from an API when the page loads.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Syncing the document title with state.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Setting up and cleaning up event listeners.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Running code only when certain state/props change.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Think of this project as your sandbox to experiment with React hooks before you apply them in bigger apps (like your Aquatech website idea).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ If you’d like, I can show you how to extend this example into something more useful — for instance, fetching and displaying a list of users from an API when the component mounts. That way, you’ll see useEffect in action beyond just logging. Would you like me to build that next?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;why we using Component Mounted in clog&amp;lt;br&amp;gt;&lt;br&gt;
We’re using &amp;amp;quot;Component Mounted&amp;amp;quot; in the console.log simply as a signal to ourselves that the component has finished loading.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Why log &amp;amp;quot;Component Mounted&amp;amp;quot;&amp;lt;br&amp;gt;&lt;br&gt;
When you build React apps, you often want to know when a component first appears on the screen.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;By putting console.log(&amp;amp;quot;Component Mounted&amp;amp;quot;) inside useEffect with an empty dependency array [], it runs only once — right after the component is rendered for the first time.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This is useful for:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Debugging (checking that your component is loading correctly).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Setting up things that should only happen once (like fetching data, starting a timer, or attaching event listeners).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;📌 Purpose of this project&amp;lt;br&amp;gt;&lt;br&gt;
Right now, your project is a practice playground:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You’re learning how useEffect works.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Logging &amp;amp;quot;Component Mounted&amp;amp;quot; is just a demo side effect to prove that the hook runs when the component loads.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;In real projects, instead of logging, you’d do something meaningful here:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Fetch data from an API.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Initialize a library.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Subscribe to events.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Update the document title.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;So the &amp;amp;quot;Component Mounted&amp;amp;quot; message is just a placeholder action — it shows you the timing of useEffect. Later, you’ll replace it with real logic depending on your app’s needs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 Do you want me to show you a real-world example where useEffect fetches data from an API when the component mounts, instead of just logging? That way you’ll see how this placeholder becomes useful in practice.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;other than &amp;amp;quot;Component Mounted&amp;amp;quot; anyother we can use or not&amp;lt;br&amp;gt;&lt;br&gt;
Yes, you can absolutely log something other than &amp;amp;quot;Component Mounted&amp;amp;quot; — that message is just a placeholder to show you when the effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Examples of what else you might log&amp;lt;br&amp;gt;&lt;br&gt;
Debugging info&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;App started successfully&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
State values&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Initial count is 0&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
Custom messages&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Welcome, Saran! Component is ready.&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
📌 The idea&amp;lt;br&amp;gt;&lt;br&gt;
The text inside console.log() can be anything you want — it’s just for you (the developer) to see in the browser console.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;In real projects, instead of logging, you’d usually do something useful inside useEffect:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Fetch data from an API.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Set up event listeners.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Start a timer.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Update the document title.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 So &amp;amp;quot;Component Mounted&amp;amp;quot; is not special — it’s just a common phrase developers use to remind themselves that the component has loaded. You can replace it with any message that helps you understand what’s happening.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to show you a real-world replacement for that log, like fetching data from an API when the component mounts, so you see how useEffect becomes practical?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;give me this code without arrow function&amp;lt;br&amp;gt;&lt;br&gt;
Got it, Saran 👍 — you want the same code but written without arrow functions. Let’s rewrite your example using the standard function syntax.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Code with normal function (no arrow function)&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Component() {&amp;lt;br&amp;gt;&lt;br&gt;
  useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Component Mounted&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }, []); // runs only once when component mounts&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return &amp;lt;h1&amp;gt;Hello World&amp;lt;/h1&amp;gt;;&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default Component;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 What changed&amp;lt;br&amp;gt;&lt;br&gt;
Instead of:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Component Mounted&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
We now use:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Component Mounted&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
Both versions do the same thing — the difference is just syntax style:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Arrow function (()=&amp;amp;gt;{}) → shorter, modern ES6 style.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Standard function (function () {}) → older but still valid, sometimes clearer for beginners.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;💡 In React, you can use either style inside useEffect. Developers often prefer arrow functions for brevity, but using function is perfectly fine.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to also show you how to write your earlier checkbox skills example without arrow functions, so you can compare both styles side by side?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Rendered&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }); // no dependency array → runs every render&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={(e) =&amp;gt; setText(e.target.value)}&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder=&amp;amp;quot;Type something&amp;amp;quot;&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
Nice work, Saran 👌 — you’ve written a React component that logs &amp;amp;quot;Rendered&amp;amp;quot; every time the component re-renders. Let’s unpack it carefully:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 What your code does&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Rendered&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }); // no dependency array → runs every render&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={(e) =&amp;gt; setText(e.target.value)}&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder=&amp;amp;quot;Type something&amp;amp;quot;&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
useState(&amp;amp;quot;&amp;amp;quot;) → creates a state variable text with an empty string as the initial value.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; { console.log(&amp;amp;quot;Rendered&amp;amp;quot;); });&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Because there’s no dependency array, this effect runs after every render.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;So each time you type in the input, React re-renders → the effect runs → &amp;amp;quot;Rendered&amp;amp;quot; appears in the console.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;onChange={(e) =&amp;amp;gt; setText(e.target.value)} → updates the state with whatever you type, which triggers a re-render.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Without arrow function&amp;lt;br&amp;gt;&lt;br&gt;
If you want the same code but without arrow functions, here’s the version:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Rendered&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }); // runs every render&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function handleChange(e) {&amp;lt;br&amp;gt;&lt;br&gt;
    setText(e.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={handleChange}&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder="Type something"&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
🧠 Key takeaway&amp;lt;br&amp;gt;&lt;br&gt;
With arrow functions → shorter syntax, common in modern React code.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With normal functions → same behavior, just more explicit.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Both are valid — it’s just a matter of style and preference.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 Do you want me to also show you how to add a dependency array here (like [text]) so the effect runs only when the input value changes, instead of every render? That would be the next logical step in practicing useEffect.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;explain this prb&amp;lt;br&amp;gt;&lt;br&gt;
Alright Saran, let’s break down your code problem step by step so it’s crystal clear:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Your Code&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Rendered&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }); // no dependency array → runs every render&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={(e) =&amp;gt; setText(e.target.value)}&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder=&amp;amp;quot;Type something&amp;amp;quot;&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 What’s happening here&amp;lt;br&amp;gt;&lt;br&gt;
State Setup&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
Creates a state variable text with an initial value of &amp;amp;quot;&amp;amp;quot; (empty string).&amp;lt;br&amp;gt;&lt;br&gt;
setText is the function to update it.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Effect&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; { console.log(&amp;amp;quot;Rendered&amp;amp;quot;); });&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
Because there’s no dependency array, this effect runs after every render.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;So every time you type in the input, React re-renders → effect runs → &amp;amp;quot;Rendered&amp;amp;quot; is logged.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Input&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;input value={text} onChange={(e) =&amp;gt; setText(e.target.value)} /&amp;amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
This is a controlled input: its value comes from React state.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;When you type, onChange updates text → triggers a re-render → effect runs again.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Why this is important&amp;lt;br&amp;gt;&lt;br&gt;
This example shows how useEffect behaves without a dependency array.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;It’s useful for debugging or tracking renders, but in real apps you usually want to control when the effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Variations&amp;lt;br&amp;gt;&lt;br&gt;
Run only once (on mount):&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Mounted&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
Run only when text changes:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Text changed:&amp;amp;quot;, text);&amp;lt;br&amp;gt;&lt;br&gt;
}, [text]);&amp;lt;br&amp;gt;&lt;br&gt;
👉 So the purpose of this problem is to help you understand how useEffect behaves differently depending on the dependency array. Right now, it’s showing you the “every render” case.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to turn this into a mini practice exercise where you try all three cases ([], [text], and no array) and observe the difference in the console? That way you’ll really feel the difference in behavior.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;without arrow function in return&amp;lt;br&amp;gt;&lt;br&gt;
Got it, Saran 👍 — you want the return part without arrow functions. Right now your code uses an arrow function inside onChange. Let’s rewrite it using a normal function instead.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Code without arrow function in return&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Rendered&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }); // runs every render&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;// define a normal function instead of arrow&amp;lt;br&amp;gt;&lt;br&gt;
  function handleChange(e) {&amp;lt;br&amp;gt;&lt;br&gt;
    setText(e.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={handleChange}   // use the function here&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder="Type something"&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 What changed&amp;lt;br&amp;gt;&lt;br&gt;
Replaced the inline arrow function (e) =&amp;amp;gt; setText(e.target.value) with a named function:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
function handleChange(e) {&amp;lt;br&amp;gt;&lt;br&gt;
  setText(e.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;br&amp;gt;&lt;br&gt;
In the return, we now just reference onChange={handleChange}.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;💡 This style is often clearer for beginners because the logic is separated from the JSX. Arrow functions are shorter, but normal functions make it easier to reuse the handler elsewhere.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to also show you how to write the same component entirely without arrow functions (including useEffect and event handlers), so you see the full difference side by side?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;now  give this without useeffect i need to see the differences&amp;lt;br&amp;gt;&lt;br&gt;
Perfect, Saran — let’s look at your component without useEffect so you can see the difference clearly.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔎 Your current version (with useEffect)&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Rendered&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }); // runs every render&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function handleChange(e) {&amp;lt;br&amp;gt;&lt;br&gt;
    setText(e.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={handleChange}&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder="Type something"&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
Every time the component renders, useEffect runs and logs &amp;amp;quot;Rendered&amp;amp;quot;.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Typing in the input triggers a re-render → console shows &amp;amp;quot;Rendered&amp;amp;quot; again.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Version without useEffect&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function handleChange(e) {&amp;lt;br&amp;gt;&lt;br&gt;
    setText(e.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Input changed:&amp;amp;quot;, e.target.value); // log directly here&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={handleChange}&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder="Type something"&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 Difference explained&amp;lt;br&amp;gt;&lt;br&gt;
With useEffect → logs happen after every render, even if nothing changed except React re-rendering.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Without useEffect → logs happen only when the event handler runs (here, when you type in the input).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;So:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect is useful when you want to react to render cycles (e.g., fetch data when component mounts, sync document title when state changes).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Direct logging inside event handlers is useful when you only care about user actions (like typing, clicking, etc.).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 In short:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With useEffect → logs every render.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Without useEffect → logs only when the input changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to also show you a third version where the effect runs only when text changes (using [text] as dependency)? That way you’ll see all three behaviors side by side.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;i cannot understand what is logs happen after every render even if nothing changed&amp;lt;br&amp;gt;&lt;br&gt;
Okay Saran, let’s slow this down and make it super clear with an example.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 What “logs happen after every render” means&amp;lt;br&amp;gt;&lt;br&gt;
In React, render = when React draws your component on the screen.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Every time state changes, React re-renders the component.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If you put console.log(&amp;amp;quot;Rendered&amp;amp;quot;) inside useEffect without a dependency array, it runs after every render cycle.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;So even if you don’t change anything important, React may still re-render (for example, when state updates). That’s why you see &amp;amp;quot;Rendered&amp;amp;quot; in the console again and again.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧪 Example 1: With useEffect (no dependency array)&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Rendered&amp;amp;quot;); // runs after every render&amp;lt;br&amp;gt;&lt;br&gt;
  });&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function handleChange(e) {&amp;lt;br&amp;gt;&lt;br&gt;
    setText(e.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={handleChange}&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder="Type something"&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
👉 Here, every time you type a letter, React re-renders → useEffect runs → &amp;amp;quot;Rendered&amp;amp;quot; appears in console.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧪 Example 2: Without useEffect&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function handleChange(e) {&amp;lt;br&amp;gt;&lt;br&gt;
    setText(e.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Input changed:&amp;amp;quot;, e.target.value); // runs only when you type&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={handleChange}&amp;lt;br&amp;gt;&lt;br&gt;
      placeholder="Type something"&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
👉 Here, &amp;amp;quot;Input changed:&amp;amp;quot; only logs when you type. It does not run after every render cycle — only when the event handler fires.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Difference in plain words&amp;lt;br&amp;gt;&lt;br&gt;
With useEffect (no array) → logs after every render, even if React re-renders for internal reasons.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Without useEffect → logs only when you explicitly call console.log inside an event handler (like typing).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;💡 Think of useEffect as “React telling you what happened after it finished drawing.”&amp;lt;br&amp;gt;&lt;br&gt;
Event handlers are “React telling you when the user did something.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Do you want me to show you a third case where useEffect runs only when text changes (using [text] as dependency)? That way you’ll see all three behaviors side by side.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;first of all what is rendered&amp;lt;br&amp;gt;&lt;br&gt;
Great timing to ask this, Saran — let’s make “render” crystal clear.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 What does render mean in React?&amp;lt;br&amp;gt;&lt;br&gt;
Render = React drawing your component’s UI on the screen.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Every time React needs to show something new (like updated text, a new list item, or a changed button state), it re-runs your component function and updates the DOM (the browser’s page structure).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Think of it like:&amp;lt;br&amp;gt;&lt;br&gt;
🖌️ “React picks up the paintbrush and redraws your component.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ When does a render happen?&amp;lt;br&amp;gt;&lt;br&gt;
Initial render → when the component first appears on the page.&amp;lt;br&amp;gt;&lt;br&gt;
Example: opening your app → React draws &amp;lt;input placeholder="Type something" /&amp;gt;.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Re-render → whenever state or props change.&amp;lt;br&amp;gt;&lt;br&gt;
Example: typing in the input → text state changes → React redraws the input with the new value.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧪 Simple analogy&amp;lt;br&amp;gt;&lt;br&gt;
Imagine your component is a whiteboard:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;First time → React writes “Hello World” on the board (initial render).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Every time state changes → React erases and rewrites the board (re-render).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;📌 Why your console shows logs&amp;lt;br&amp;gt;&lt;br&gt;
With useEffect (no dependency array), React says:&amp;lt;br&amp;gt;&lt;br&gt;
“I finished drawing the board” → runs your effect → logs &amp;amp;quot;Rendered&amp;amp;quot;.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Without useEffect, you only log when the user types (inside the event handler).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 So render = React running your component function to update what’s shown on the screen.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to show you a visual timeline diagram of what happens when you type in your input — initial render, re-render, effect firing — so you can see the sequence step by step?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;i understand but this happens on use state also then why useeffect&amp;lt;br&amp;gt;&lt;br&gt;
Great observation, Saran — you noticed that state (useState) already causes re-renders, so why do we even need useEffect? Let’s break it down:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 What useState does&amp;lt;br&amp;gt;&lt;br&gt;
When you call setText(&amp;amp;quot;new value&amp;amp;quot;), React re-renders your component.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;That means your JSX runs again, and the UI updates.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Example: typing in an input → state changes → React redraws the input with the new value.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;So yes, useState alone is enough to trigger re-renders.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Why useEffect exists&amp;lt;br&amp;gt;&lt;br&gt;
useEffect is not about re-rendering — it’s about running side effects after React finishes rendering.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;State (useState) → controls your component’s data and triggers re-renders.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Effect (useEffect) → lets you run extra code after the render happens.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Think of it like this:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useState = “React, redraw my component with new data.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect = “React, after you finish drawing, also do this extra work.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Example difference&amp;lt;br&amp;gt;&lt;br&gt;
Without useEffect:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={(e) =&amp;gt; setText(e.target.value)}&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;br&amp;gt;&lt;br&gt;
👉 Only updates the input. No extra work.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With useEffect:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Text changed:&amp;amp;quot;, text);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [text]);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
      value={text}&amp;lt;br&amp;gt;&lt;br&gt;
      onChange={(e) =&amp;gt; setText(e.target.value)}&amp;lt;br&amp;gt;&lt;br&gt;
    /&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;br&amp;gt;&lt;br&gt;
👉 Updates the input and also logs whenever text changes.&amp;lt;br&amp;gt;&lt;br&gt;
That’s a side effect — something outside the normal UI update.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Why this matters&amp;lt;br&amp;gt;&lt;br&gt;
useState is about data + re-render.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect is about side effects after render (fetching data, logging, timers, subscriptions, DOM updates).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;💡 In short:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You need useState to store and update values.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You need useEffect when you want to react to those changes with extra work outside the UI.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to show you a real-world example where useEffect fetches data from an API when the component mounts, so you can see why it’s useful beyond just logging?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;i understand tell me this is correct or not for long code or main one if we use usestate it will take more time for rendering because the code can big eventhough it may a small change but in use effect use side effect&amp;lt;br&amp;gt;&lt;br&gt;
You’ve got the right intuition, Saran — let me clear up the confusion:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Rendering with useState&amp;lt;br&amp;gt;&lt;br&gt;
Whenever you call setState (like setText), React must re-run your component function to update the UI.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Even if the change is small (like typing one letter), React redraws the component.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;For a big component with lots of code, yes, React has to go through all of it again — but React is optimized to only update the parts of the DOM that actually changed. So it’s not as “heavy” as it sounds.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Where useEffect fits in&amp;lt;br&amp;gt;&lt;br&gt;
useEffect does not reduce rendering time.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Instead, it’s a place to put side effects (things outside the normal UI update, like fetching data, logging, timers, subscriptions).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;The key difference:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useState → triggers re-render when data changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect → runs extra code after React finishes rendering.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Example&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;// This runs after every render&amp;lt;br&amp;gt;&lt;br&gt;
  useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Count changed:&amp;amp;quot;, count);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [count]);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      Clicked {count} times&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;br&amp;gt;&lt;br&gt;
setCount → causes re-render.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect → runs after render, logging the new count.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Without useEffect, you’d only see the button update visually, but no side effect (like logging or fetching).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 So is your statement correct?&amp;lt;br&amp;gt;&lt;br&gt;
Not exactly.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useState doesn’t “take more time” just because the code is long — React optimizes re-renders.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect isn’t about making rendering faster — it’s about separating UI updates from side effects.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Think of it like this:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useState = “Redraw the component with new data.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect = “After redraw, do extra work (side effects).”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 In short: useEffect doesn’t save rendering time — it just gives you a safe place to run side effects after React finishes rendering.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to show you a real-world case where putting code directly in the render would be wrong, but putting it in useEffect makes it correct (like fetching data from an API)? That’s the best way to see why useEffect exists.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;in this if u see the question they asked about dependency array what is that&amp;lt;br&amp;gt;&lt;br&gt;
Excellent question, Saran — the dependency array in useEffect is the part inside the square brackets []. It controls when the effect runs. Let’s break it down clearly:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 What is the dependency array?&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  // side effect code&amp;lt;br&amp;gt;&lt;br&gt;
}, [dependencies]);&amp;lt;br&amp;gt;&lt;br&gt;
The second argument ([dependencies]) is called the dependency array.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;It tells React: “Only run this effect when these values change.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Cases&amp;lt;br&amp;gt;&lt;br&gt;
No dependency array&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Runs after every render&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
});&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs after every render, no matter what changed.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Empty dependency array []&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Runs only once (on mount)&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs only once when the component first loads (like componentDidMount).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With specific dependencies&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Text changed:&amp;amp;quot;, text);&amp;lt;br&amp;gt;&lt;br&gt;
}, [text]);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs only when text changes.&amp;lt;br&amp;gt;&lt;br&gt;
If you type in the input, it logs. If something else re-renders but text didn’t change, it won’t run.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Why it matters&amp;lt;br&amp;gt;&lt;br&gt;
Without dependencies → effect runs too often (can cause performance issues).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With dependencies → you control exactly when the effect should run.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This is especially important for API calls, event listeners, timers — you don’t want them firing unnecessarily.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;📌 In simple words&amp;lt;br&amp;gt;&lt;br&gt;
[] → run once.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;[something] → run when that “something” changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;No array → run every time the component re-renders.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 So the dependency array is like a filter that decides when your side effect should happen.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to show you a mini demo with three versions of your input example (no array, empty array, [text]) so you can see the console logs behave differently side by side?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;so if they ask use dependency we need use it in []&amp;lt;br&amp;gt;&lt;br&gt;
Exactly, Saran 👍 — when they ask about using dependencies in useEffect, it means you should put them inside the square brackets [].&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 How it works&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  // side effect code&amp;lt;br&amp;gt;&lt;br&gt;
}, [dependency1, dependency2]);&amp;lt;br&amp;gt;&lt;br&gt;
The array [dependency1, dependency2] tells React:&amp;lt;br&amp;gt;&lt;br&gt;
“Run this effect only when these values change.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Examples&amp;lt;br&amp;gt;&lt;br&gt;
Empty array []&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Runs only once when mounted&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs only the first time the component loads.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With a dependency&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Text changed:&amp;amp;quot;, text);&amp;lt;br&amp;gt;&lt;br&gt;
}, [text]);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs only when text changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Multiple dependencies&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Either text or count changed&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, [text, count]);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs when either text or count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Why it matters&amp;lt;br&amp;gt;&lt;br&gt;
Without [] → runs after every render (can be wasteful).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With [] → runs only once (good for setup like fetching data).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With [something] → runs only when that “something” changes (good for reacting to specific state changes).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;💡 So yes: if they ask about “dependency array,” you need to use it inside [] to control when your effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to make a side-by-side demo of all three cases (no array, [], [text]) so you can literally see the console logs behave differently? That way the difference will be super obvious.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;more than 2 depenency is possible&amp;lt;br&amp;gt;&lt;br&gt;
Yes Saran 👍 — you can definitely have more than 2 dependencies in the array. The dependency array can hold any number of values (state variables or props) that your effect depends on.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Example with multiple dependencies&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [text, setText] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;br&amp;gt;&lt;br&gt;
  const [color, setColor] = useState(&amp;amp;quot;blue&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Effect ran because text, count, or color changed&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [text, count, color]); // multiple dependencies&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
        value={text}&amp;lt;br&amp;gt;&lt;br&gt;
        onChange={(e) =&amp;gt; setText(e.target.value)}&amp;lt;br&amp;gt;&lt;br&gt;
        placeholder=&amp;amp;quot;Type something&amp;amp;quot;&amp;lt;br&amp;gt;&lt;br&gt;
      /&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;amp;gt;Increase Count&amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;button onClick={() =&amp;gt; setColor(&amp;amp;quot;red&amp;amp;quot;)}&amp;amp;gt;Change Color&amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
⚡ How this works&amp;lt;br&amp;gt;&lt;br&gt;
The effect runs when any one of the dependencies changes:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Typing → text changes → effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Clicking “Increase Count” → count changes → effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Clicking “Change Color” → color changes → effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Key takeaway&amp;lt;br&amp;gt;&lt;br&gt;
Dependency array can have 0, 1, 2, or many values.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;React checks each dependency — if any of them changed since the last render, the effect runs again.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This gives you fine control over when your side effect should happen.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 So yes, more than 2 dependencies is possible — you can list as many as your effect needs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to show you a bad case (when you forget a dependency) and how it can cause bugs, so you understand why React insists on listing them correctly?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Count changed&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [count]); // runs only when count changes&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
with useeffect&amp;lt;br&amp;gt;&lt;br&gt;
Yes Saran 👍 — your code with useEffect and [count] as dependency is correct. Let’s break down why:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Your code&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Count changed&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [count]); // runs only when count changes&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
⚡ What happens here&amp;lt;br&amp;gt;&lt;br&gt;
Initial render → Component loads with count = 0.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect runs once because React compares dependencies (no previous value yet).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Console shows &amp;amp;quot;Count changed&amp;amp;quot;.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Click button → setCount(count + 1) updates state.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;React re-renders the component with new count.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Since [count] changed, useEffect runs again.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Console shows &amp;amp;quot;Count changed&amp;amp;quot;.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If you re-render for another reason (but count didn’t change) → effect does not run.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;That’s the power of the dependency array.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Why [count] is important&amp;lt;br&amp;gt;&lt;br&gt;
Without [count] → effect runs after every render, even if count didn’t change.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With [count] → effect runs only when count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This makes your code more efficient and predictable.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;📌 In short&amp;lt;br&amp;gt;&lt;br&gt;
✅ Your code is correct.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;It demonstrates the dependency array usage perfectly: the effect runs only when count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This is the recommended way to handle side effects tied to specific state variables.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to extend this example to multiple dependencies (like [count, text]) so you can see how it behaves when more than one state variable controls the effect?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;without useeffect&amp;lt;br&amp;gt;&lt;br&gt;
Alright Saran 👍 — let’s rewrite your count example without useEffect so you can see the difference.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Code without useEffect&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function handleClick() {&amp;lt;br&amp;gt;&lt;br&gt;
    setCount(count + 1);&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Count changed&amp;amp;quot;); // log directly here&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={handleClick}&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 Difference explained&amp;lt;br&amp;gt;&lt;br&gt;
With useEffect + [count]&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;React runs the effect after every render where count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Good for side effects that depend on state (like fetching data, updating the DOM, or syncing with local storage).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Without useEffect&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You log &amp;amp;quot;Count changed&amp;amp;quot; inside the event handler.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This means the log happens only when the button is clicked (when you call setCount).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;It won’t run if count changes for some other reason (like props or external updates).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Key takeaway&amp;lt;br&amp;gt;&lt;br&gt;
useState alone handles re-rendering the UI.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect is useful when you want to react to state changes automatically after render, not just inside event handlers.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Without useEffect, you must manually put your side effect code inside the event handler.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 So both versions are correct — but they serve different purposes.&amp;lt;br&amp;gt;&lt;br&gt;
Would you like me to show you a side-by-side timeline of what happens when you click the button in each version (with vs. without useEffect)? That way you’ll see the exact sequence of render and log.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;import {useState} from &amp;amp;#39;react&amp;amp;#39;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Countchange(){&amp;lt;br&amp;gt;&lt;br&gt;
    const(count, setCount)= useState(0)&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;div class="highlight"&amp;gt;&amp;lt;pre class="highlight plaintext"&amp;gt;&amp;lt;code&amp;gt;function changer(){&lt;br&gt;
    setCount(count+1);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;return(&lt;br&gt;
    &amp;amp;lt;button onClick={changer}&amp;amp;gt;&lt;br&gt;
        count:{count}&lt;br&gt;
    &amp;amp;lt;/button&amp;amp;gt;&lt;br&gt;
)&lt;br&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;p&amp;gt;}&amp;lt;br&amp;gt;&lt;br&gt;
export default Countchanger&amp;lt;br&amp;gt;&lt;br&gt;
Good try, Saran 👍 — but there are a couple of small mistakes in your code. Let me fix it and explain:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;❌ Issues in your code&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
const(count, setCount)= useState(0)&amp;lt;br&amp;gt;&lt;br&gt;
const doesn’t use parentheses here. It should use array destructuring with square brackets [].&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
export default Countchanger&amp;lt;br&amp;gt;&lt;br&gt;
Your function name is Countchange, but you’re exporting Countchanger (spelling mismatch).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Corrected Code&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import { useState } from &amp;amp;#39;react&amp;amp;#39;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Countchange() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0); // ✅ use square brackets&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function changer() {&amp;lt;br&amp;gt;&lt;br&gt;
    setCount(count + 1);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={changer}&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default Countchange; // ✅ match the function name&amp;lt;br&amp;gt;&lt;br&gt;
🔍 Explanation&amp;lt;br&amp;gt;&lt;br&gt;
useState(0) → initializes count with 0.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;[count, setCount] → array destructuring:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;count = current value.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;setCount = function to update it.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;changer() → increases count by 1 each time you click.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return → button shows the current count.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 Now when you click the button, the number will increase correctly.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to also show you a version with useEffect so you can compare how the log runs when count changes versus this simple version?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;but ui is not showing anything&amp;lt;br&amp;gt;&lt;br&gt;
Ah, I see what’s happening, Saran 👀 — your code is correct now, but if nothing shows in the UI, it usually means the React app itself isn’t running properly, not the component code. Let’s troubleshoot step by step:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Check your code&amp;lt;br&amp;gt;&lt;br&gt;
Here’s the fixed version again:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
import { useState } from &amp;amp;#39;react&amp;amp;#39;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Countchange() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function changer() {&amp;lt;br&amp;gt;&lt;br&gt;
    setCount(count + 1);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={changer}&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default Countchange;&amp;lt;br&amp;gt;&lt;br&gt;
This is fine — it should show a button with Count: 0.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Why UI might not show&amp;lt;br&amp;gt;&lt;br&gt;
App not running&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Did you start the dev server?&amp;lt;br&amp;gt;&lt;br&gt;
Run:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;bash&amp;lt;br&amp;gt;&lt;br&gt;
npm start&amp;lt;br&amp;gt;&lt;br&gt;
or&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;bash&amp;lt;br&amp;gt;&lt;br&gt;
yarn start&amp;lt;br&amp;gt;&lt;br&gt;
in your project folder.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Component not used in App.js&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If you only exported Countchange, but never imported it into your main App.js, nothing will show.&amp;lt;br&amp;gt;&lt;br&gt;
Example:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React from &amp;amp;#39;react&amp;amp;#39;;&amp;lt;br&amp;gt;&lt;br&gt;
import Countchange from &amp;amp;#39;./Countchange&amp;amp;#39;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;Countchange /&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
Compilation error&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If there’s a typo (like const(count, setCount) instead of [count, setCount]), React won’t compile → blank screen.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Browser shows “site can’t be reached”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;That means the dev server isn’t running or crashed. Restart it with npm start.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Key takeaway&amp;lt;br&amp;gt;&lt;br&gt;
Your component is fine.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;The issue is likely that it’s not being rendered inside App.js, or the dev server isn’t running.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 Quick test: In App.js, replace everything with just:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React from &amp;amp;#39;react&amp;amp;#39;;&amp;lt;br&amp;gt;&lt;br&gt;
import Countchange from &amp;amp;#39;./Countchange&amp;amp;#39;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function App() {&amp;lt;br&amp;gt;&lt;br&gt;
  return &amp;lt;Countchange /&amp;gt;;&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default App;&amp;lt;br&amp;gt;&lt;br&gt;
Now run npm start → you should see the button.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Do you want me to walk you through how to check if your React dev server is running correctly (like what to look for in the terminal and browser)? That way you’ll know whether the problem is in the code or in the setup.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;now with useEffect&amp;lt;br&amp;gt;&lt;br&gt;
Perfect, Saran 👍 — let’s add useEffect to your Countchange component so you can see how it behaves when the state changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ With useEffect&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import { useState, useEffect } from &amp;amp;#39;react&amp;amp;#39;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Countchange() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function changer() {&amp;lt;br&amp;gt;&lt;br&gt;
    setCount(count + 1);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Count changed:&amp;amp;quot;, count);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [count]); // runs only when count changes&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={changer}&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default Countchange;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 What happens here&amp;lt;br&amp;gt;&lt;br&gt;
Initial render → count = 0.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect runs once because React compares dependencies (no previous value yet).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Console shows: Count changed: 0.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Click button → setCount(count + 1) updates state.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;React re-renders with new count.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Since [count] changed, useEffect runs again.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Console shows: Count changed: 1, Count changed: 2, etc.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If something else re-renders but count didn’t change → effect does not run.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Key takeaway&amp;lt;br&amp;gt;&lt;br&gt;
useState → updates the UI when count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect([count]) → runs extra code (side effect) only when count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This is useful for things like logging, fetching data, or syncing with local storage whenever a specific state changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 Now you’ve seen both versions:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Without useEffect → log happens only inside the event handler.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With useEffect → log happens automatically after every render where count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to extend this example to multiple dependencies (like [count, text]) so you can see how the effect reacts when more than one state variable changes?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;console.log(&amp;amp;quot;Count changed:&amp;amp;quot;, count); in this we can change the value inside or not&amp;lt;br&amp;gt;&lt;br&gt;
Good question, Saran 👍 — let’s clear this up.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 console.log(&amp;amp;quot;Count changed:&amp;amp;quot;, count);&amp;lt;br&amp;gt;&lt;br&gt;
This line only prints the current value of count to the console.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;It does not change the value of count.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;In React, the only way to change state is by calling the updater function (setCount).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Example&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Count changed:&amp;amp;quot;, count); // just shows the value&amp;lt;br&amp;gt;&lt;br&gt;
}, [count]);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Here, React runs the effect whenever count changes, but the effect itself does not modify count. It only logs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Important rule&amp;lt;br&amp;gt;&lt;br&gt;
State is immutable directly → you cannot change it by writing count = count + 1 or inside console.log.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You must always use setCount(newValue) to update it.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;console.log is just for debugging — it shows what the value is at that moment.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Correct way to change value&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
function changer() {&amp;lt;br&amp;gt;&lt;br&gt;
  setCount(count + 1); // updates state&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;br&amp;gt;&lt;br&gt;
👉 So to answer your question:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;No, you cannot change the value inside console.log.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;console.log only displays the value.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;To change it, you must use setCount.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to show you a wrong example (trying to change count directly) and the right example (using setCount) side by side, so you see why React enforces this rule?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Today&amp;lt;br&amp;gt;&lt;br&gt;
now explain the 4th que&amp;lt;br&amp;gt;&lt;br&gt;
Got it, Saran 👍 — let’s go through Question 4 (dependency array in useEffect) step by step, since that’s what your examples have been circling around.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 What Question 4 usually asks&amp;lt;br&amp;gt;&lt;br&gt;
In React interview or practice sets, the 4th question about useEffect is often:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 “What is the dependency array in useEffect and why is it used?”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Explanation&amp;lt;br&amp;gt;&lt;br&gt;
The dependency array is the second argument in useEffect:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  // side effect code&amp;lt;br&amp;gt;&lt;br&gt;
}, [dependencies]);&amp;lt;br&amp;gt;&lt;br&gt;
It tells React when to run the effect.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Cases&amp;lt;br&amp;gt;&lt;br&gt;
No dependency array&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Runs after every render&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
});&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs after every render, no matter what changed.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Empty dependency array []&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Runs only once&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, []);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs only once when the component mounts (like componentDidMount).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With dependencies&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Count changed:&amp;amp;quot;, count);&amp;lt;br&amp;gt;&lt;br&gt;
}, [count]);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs only when count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Multiple dependencies&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Text or Count changed&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, [text, count]);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Runs when either text or count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Why it matters&amp;lt;br&amp;gt;&lt;br&gt;
Prevents unnecessary side effects.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Makes code efficient by running effects only when needed.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Helps avoid bugs (like infinite loops if you forget dependencies).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;📌 In short&amp;lt;br&amp;gt;&lt;br&gt;
Dependency array = control switch for useEffect.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;[] → run once.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;[state] → run when that state changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;No array → run every render.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Multiple values → run when any of them changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 So if Question 4 is about dependency array, the correct answer is:&amp;lt;br&amp;gt;&lt;br&gt;
It’s the second argument in useEffect that decides when the effect should run, based on the values inside the array.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Do you want me to also show you a wrong case (like forgetting to put count in the array) and explain why React warns about it? That’s often part of the interview question too.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;give me full code&amp;lt;br&amp;gt;&lt;br&gt;
Here’s the full code for your count example with useEffect and the dependency array explained properly:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;#39;react&amp;amp;#39;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Countchange() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function changer() {&amp;lt;br&amp;gt;&lt;br&gt;
    setCount(count + 1);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;// ✅ useEffect with dependency array&amp;lt;br&amp;gt;&lt;br&gt;
  useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Count changed:&amp;amp;quot;, count);&amp;lt;br&amp;gt;&lt;br&gt;
    // This runs only when &amp;amp;#39;count&amp;amp;#39; changes&amp;lt;br&amp;gt;&lt;br&gt;
  }, [count]); &amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={changer}&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default Countchange;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 How this works&amp;lt;br&amp;gt;&lt;br&gt;
Initial render → count = 0.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect runs once because React compares dependencies (no previous value yet).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Console shows: Count changed: 0.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Click button → setCount(count + 1) updates state.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;React re-renders with new count.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Since [count] changed, useEffect runs again.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Console shows: Count changed: 1, Count changed: 2, etc.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If something else re-renders but count didn’t change → effect does not run.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Key takeaway&amp;lt;br&amp;gt;&lt;br&gt;
useState → updates the UI when count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect([count]) → runs extra code (side effect) only when count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;The dependency array [count] makes sure the effect doesn’t run unnecessarily.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 This is the complete working code for Question 4 about dependency arrays.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Do you want me to also give you the three variations side by side (no array, empty array [], and [count]) so you can compare how the console behaves in each case?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;ol&amp;gt;&lt;br&gt;
&amp;lt;li&amp;gt;Two States, One Effect&lt;br&gt;
const [count, setCount] = useState(0);&lt;br&gt;
const [name, setName] = useState(&amp;amp;quot;&amp;amp;quot;);&lt;br&gt;
Run effect when count OR name changes.- How will dependency array look?- What if only count is added?&lt;br&gt;
Alright Saran 👍 — let’s carefully break down Question 4: Two States, One Effect.&amp;lt;/li&amp;gt;&lt;br&gt;
&amp;lt;/ol&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 The setup&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
const [count, setCount] = useState(0);&amp;lt;br&amp;gt;&lt;br&gt;
const [name, setName] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
You want the effect to run when either count OR name changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Correct dependency array&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Count or Name changed&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, [count, name]); &amp;lt;br&amp;gt;&lt;br&gt;
👉 This means:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If count changes → effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If name changes → effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If both change → effect runs once after that render.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ What if only count is added?&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Count changed&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}, [count]); &amp;lt;br&amp;gt;&lt;br&gt;
👉 In this case:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Effect runs when count changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;But if name changes, the effect does not run.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;That means you’ll miss side effects related to name.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Key takeaway&amp;lt;br&amp;gt;&lt;br&gt;
Dependency array must include all values your effect depends on.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If you leave one out (like name), React won’t re-run the effect when that value changes → possible bugs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;That’s why React’s linter often warns: “React Hook useEffect has missing dependencies.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;📌 Full working code&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function TwoStatesEffect() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;br&amp;gt;&lt;br&gt;
  const [name, setName] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Count or Name changed:&amp;amp;quot;, count, name);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [count, name]); // ✅ runs when either changes&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
        Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
        value={name}&amp;lt;br&amp;gt;&lt;br&gt;
        onChange={(e) =&amp;gt; setName(e.target.value)}&amp;lt;br&amp;gt;&lt;br&gt;
        placeholder=&amp;amp;quot;Type a name&amp;amp;quot;&amp;lt;br&amp;gt;&lt;br&gt;
      /&amp;amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default TwoStatesEffect;&amp;lt;br&amp;gt;&lt;br&gt;
👉 So the answer is:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Dependency array should be [count, name].&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If you only add [count], the effect will ignore changes to name.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to also show you a timeline diagram of what happens when you click the button vs. type in the input, so you can see exactly when the effect fires?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;without arrow function&amp;lt;br&amp;gt;&lt;br&gt;
Perfect timing, Saran 👍 — let’s rewrite the Two States, One Effect example without arrow functions so you can see the difference clearly.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Full Code (without arrow functions)&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import React, { useState, useEffect } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function TwoStatesEffect() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;br&amp;gt;&lt;br&gt;
  const [name, setName] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;// useEffect with normal function syntax&amp;lt;br&amp;gt;&lt;br&gt;
  useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(&amp;amp;quot;Count or Name changed:&amp;amp;quot;, count, name);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [count, name]); // runs when either count OR name changes&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function increaseCount() {&amp;lt;br&amp;gt;&lt;br&gt;
    setCount(count + 1);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function changeName(event) {&amp;lt;br&amp;gt;&lt;br&gt;
    setName(event.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;button onClick={increaseCount}&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
        Count: {count}&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;/button&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;input&amp;lt;br&amp;gt;&lt;br&gt;
        value={name}&amp;lt;br&amp;gt;&lt;br&gt;
        onChange={changeName}&amp;lt;br&amp;gt;&lt;br&gt;
        placeholder="Type a name"&amp;lt;br&amp;gt;&lt;br&gt;
      /&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
  );&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default TwoStatesEffect;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 Key differences&amp;lt;br&amp;gt;&lt;br&gt;
Arrow function version:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Count or Name changed:&amp;amp;quot;, count, name);&amp;lt;br&amp;gt;&lt;br&gt;
}, [count, name]);&amp;lt;br&amp;gt;&lt;br&gt;
Normal function version:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Count or Name changed:&amp;amp;quot;, count, name);&amp;lt;br&amp;gt;&lt;br&gt;
}, [count, name]);&amp;lt;br&amp;gt;&lt;br&gt;
Both work the same — the only difference is syntax.&amp;lt;br&amp;gt;&lt;br&gt;
Arrow functions are shorter, but normal functions are perfectly valid.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 So yes, you can use function () { ... } inside useEffect instead of () =&amp;amp;gt; { ... }.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to also show you the wrong case (if you only put [count] in the dependency array) so you can see how the effect ignores name changes?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;why we cannot both name and count in single function&amp;lt;br&amp;gt;&lt;br&gt;
Ah, nice catch Saran 👌 — you’re asking why we can’t just handle both name and count changes inside a single function instead of using the dependency array in useEffect. Let’s break it down:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 Why not combine them in one function?&amp;lt;br&amp;gt;&lt;br&gt;
In React, state updates are independent.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;setCount() updates count.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;setName() updates name.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You can write a single function that updates both, but that’s not the same as reacting to changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Example:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;jsx&amp;lt;br&amp;gt;&lt;br&gt;
function updateBoth() {&amp;lt;br&amp;gt;&lt;br&gt;
  setCount(count + 1);&amp;lt;br&amp;gt;&lt;br&gt;
  setName(&amp;amp;quot;Saran&amp;amp;quot;);&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;br&amp;gt;&lt;br&gt;
👉 This works, but it only runs when you explicitly call updateBoth.&amp;lt;br&amp;gt;&lt;br&gt;
It does not automatically run when either count or name changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;⚡ Why useEffect with [count, name] is better&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
useEffect(function () {&amp;lt;br&amp;gt;&lt;br&gt;
  console.log(&amp;amp;quot;Count or Name changed:&amp;amp;quot;, count, name);&amp;lt;br&amp;gt;&lt;br&gt;
}, [count, name]);&amp;lt;br&amp;gt;&lt;br&gt;
👉 Here, React itself watches both values.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If count changes → effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If name changes → effect runs.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You don’t need to manually combine them in one function.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Key difference&amp;lt;br&amp;gt;&lt;br&gt;
Single function approach → you control when both states update together (manual trigger).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Dependency array approach → React automatically reacts whenever either state changes (automatic trigger).&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;So it’s not that you cannot put both in one function — you can. But that function only runs when you call it.&amp;lt;br&amp;gt;&lt;br&gt;
If you want React to automatically run side effects whenever either state changes, you must list both in the dependency array.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 In short:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;You can update both states in one function.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;But if the question is about running an effect when either changes, you need [count, name] in the dependency array.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Would you like me to show you a side-by-side demo: one version with a single function updating both, and another with useEffect([count, name]), so you can see how they behave differently?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;import { useEffect,useState} from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Twostates(){&amp;lt;br&amp;gt;&lt;br&gt;
    const[count, setCount]=useState(0);&amp;lt;br&amp;gt;&lt;br&gt;
    const[name, setName]=useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;div class="highlight"&amp;gt;&amp;lt;pre class="highlight plaintext"&amp;gt;&amp;lt;code&amp;gt;useEffect(()=&amp;amp;gt;{&lt;br&gt;
    console.log(count, name);&lt;br&gt;
}, [count, name])&lt;/p&gt;

&lt;p&gt;function changer(){&lt;br&gt;
    setCount(count+2);&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;function changeName(event) {&lt;br&gt;
setName(event.target.value);&lt;br&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;p&amp;gt;}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return(&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;button onClick={changer}&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
        count:{count}&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;/button&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;div class="highlight"&amp;gt;&amp;lt;pre class="highlight plaintext"&amp;gt;&amp;lt;code&amp;gt;&amp;amp;lt;input type="text" value={name} onChange={changeName} placeholder="type a name"/&amp;amp;gt;&lt;br&gt;
&amp;amp;lt;/div&amp;amp;gt;&lt;br&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;p&amp;gt;);&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default Twostates;&amp;lt;br&amp;gt;&lt;br&gt;
Nice work, Saran 👍 — your Twostates component is perfectly valid and demonstrates how useEffect works with two states. Let me explain it clearly:&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;✅ Your Code Behavior&amp;lt;br&amp;gt;&lt;br&gt;
jsx&amp;lt;br&amp;gt;&lt;br&gt;
import { useEffect, useState } from &amp;amp;quot;react&amp;amp;quot;;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function Twostates() {&amp;lt;br&amp;gt;&lt;br&gt;
  const [count, setCount] = useState(0);&amp;lt;br&amp;gt;&lt;br&gt;
  const [name, setName] = useState(&amp;amp;quot;&amp;amp;quot;);&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect(() =&amp;amp;gt; {&amp;lt;br&amp;gt;&lt;br&gt;
    console.log(count, name);&amp;lt;br&amp;gt;&lt;br&gt;
  }, [count, name]); // effect runs when either count OR name changes&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function changer() {&amp;lt;br&amp;gt;&lt;br&gt;
    setCount(count + 2);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;function changeName(event) {&amp;lt;br&amp;gt;&lt;br&gt;
    setName(event.target.value);&amp;lt;br&amp;gt;&lt;br&gt;
  }&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;return (&amp;lt;br&amp;gt;&lt;br&gt;
    &amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;button onClick={changer}&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
        count:{count}&amp;lt;br&amp;gt;&lt;br&gt;
      &amp;lt;/button&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;div class="highlight"&amp;gt;&amp;lt;pre class="highlight plaintext"&amp;gt;&amp;lt;code&amp;gt;  &amp;amp;lt;input type="text" value={name} onChange={changeName} placeholder="type a name" /&amp;amp;gt;&lt;br&gt;
&amp;amp;lt;/div&amp;amp;gt;&lt;br&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;p&amp;gt;);&amp;lt;br&amp;gt;&lt;br&gt;
}&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;export default Twostates;&amp;lt;br&amp;gt;&lt;br&gt;
🔍 What happens step by step&amp;lt;br&amp;gt;&lt;br&gt;
Initial render → count = 0, name = &amp;amp;quot;&amp;amp;quot;.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;useEffect runs once → console shows 0 &amp;amp;quot;&amp;amp;quot;.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Click button → setCount(count + 2) updates count.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;React re-renders.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Since count changed, useEffect runs → console shows new count and current name.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Type in input → setName(event.target.value) updates name.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;React re-renders.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Since name changed, useEffect runs → console shows current count and new name.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🧠 Why [count, name] is correct&amp;lt;br&amp;gt;&lt;br&gt;
The dependency array [count, name] tells React:&amp;lt;br&amp;gt;&lt;br&gt;
“Run this effect whenever either count OR name changes.”&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If you only put [count], then typing in the input won’t trigger the effect.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;If you only put [name], then clicking the button won’t trigger the effect.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;With both, you cover both state changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;📌 Key takeaway&amp;lt;br&amp;gt;&lt;br&gt;
Your code is correct and complete.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;It shows how useEffect can listen to multiple states at once.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;The console will always print the latest values of both count and name whenever either changes.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;👉 If you want, I can also show you a wrong version (with only [count] in the dependency array) so you can see how the effect ignores name changes. Would you like me to do that?&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;now explain react props with example&amp;lt;br&amp;gt;&lt;br&gt;
Great question, Saran 👍 — let’s dive into React Props with a clear explanation and example.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;🔍 What are Props?&amp;lt;br&amp;gt;&lt;br&gt;
Props (short for properties) are a way to pass data from a parent component to a child component.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;They make components reusable because you can give them different values each time.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Think of props like function arguments in JavaScript.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Example:&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
parent component:&amp;lt;br&amp;gt;&lt;br&gt;
&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;div class="highlight"&amp;gt;&amp;lt;pre class="highlight jsx"&amp;gt;&amp;lt;code&amp;gt;&amp;lt;span class="k"&amp;gt;import&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;React&amp;lt;/span&amp;gt; &amp;lt;span class="k"&amp;gt;from&amp;lt;/span&amp;gt; &amp;lt;span class="dl"&amp;gt;"&amp;lt;/span&amp;gt;&amp;lt;span class="s2"&amp;gt;react&amp;lt;/span&amp;gt;&amp;lt;span class="dl"&amp;gt;"&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;;&amp;lt;/span&amp;gt;&lt;br&gt;
&amp;lt;span class="k"&amp;gt;import&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;Child&amp;lt;/span&amp;gt; &amp;lt;span class="k"&amp;gt;from&amp;lt;/span&amp;gt; &amp;lt;span class="dl"&amp;gt;"&amp;lt;/span&amp;gt;&amp;lt;span class="s2"&amp;gt;./Child&amp;lt;/span&amp;gt;&amp;lt;span class="dl"&amp;gt;"&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;;&amp;lt;/span&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;span class="kd"&amp;gt;function&amp;lt;/span&amp;gt; &amp;lt;span class="nf"&amp;gt;App&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;()&amp;lt;/span&amp;gt; &amp;lt;span class="p"&amp;gt;{&amp;lt;/span&amp;gt;&lt;br&gt;
  &amp;lt;span class="k"&amp;gt;return &amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;(&amp;lt;/span&amp;gt;&lt;br&gt;
    &amp;lt;span class="p"&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span class="nt"&amp;gt;div&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt;
      &amp;lt;span class="p"&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span class="nc"&amp;gt;Child&amp;lt;/span&amp;gt; &amp;lt;span class="na"&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span class="s"&amp;gt;"Saran"&amp;lt;/span&amp;gt; &amp;lt;span class="na"&amp;gt;age&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span class="si"&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class="mi"&amp;gt;20&amp;lt;/span&amp;gt;&amp;lt;span class="si"&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class="p"&amp;gt;/&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt;
      &amp;lt;span class="p"&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span class="nc"&amp;gt;Child&amp;lt;/span&amp;gt; &amp;lt;span class="na"&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span class="s"&amp;gt;"Vijay"&amp;lt;/span&amp;gt; &amp;lt;span class="na"&amp;gt;age&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;=&amp;lt;/span&amp;gt;&amp;lt;span class="si"&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class="mi"&amp;gt;25&amp;lt;/span&amp;gt;&amp;lt;span class="si"&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class="p"&amp;gt;/&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt;
    &amp;lt;span class="p"&amp;gt;&amp;amp;lt;/&amp;lt;/span&amp;gt;&amp;lt;span class="nt"&amp;gt;div&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt;
  &amp;lt;span class="p"&amp;gt;);&amp;lt;/span&amp;gt;&lt;br&gt;
&amp;lt;span class="p"&amp;gt;}&amp;lt;/span&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;span class="k"&amp;gt;export&amp;lt;/span&amp;gt; &amp;lt;span class="k"&amp;gt;default&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;App&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;;&amp;lt;/span&amp;gt;&lt;br&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Child Component:&amp;lt;br&amp;gt;&lt;br&gt;
&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;div class="highlight"&amp;gt;&amp;lt;pre class="highlight jsx"&amp;gt;&amp;lt;code&amp;gt;&amp;lt;span class="k"&amp;gt;import&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;React&amp;lt;/span&amp;gt; &amp;lt;span class="k"&amp;gt;from&amp;lt;/span&amp;gt; &amp;lt;span class="dl"&amp;gt;"&amp;lt;/span&amp;gt;&amp;lt;span class="s2"&amp;gt;react&amp;lt;/span&amp;gt;&amp;lt;span class="dl"&amp;gt;"&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;;&amp;lt;/span&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;span class="kd"&amp;gt;function&amp;lt;/span&amp;gt; &amp;lt;span class="nf"&amp;gt;Child&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;(&amp;lt;/span&amp;gt;&amp;lt;span class="nx"&amp;gt;props&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;)&amp;lt;/span&amp;gt; &amp;lt;span class="p"&amp;gt;{&amp;lt;/span&amp;gt;&lt;br&gt;
  &amp;lt;span class="k"&amp;gt;return &amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;(&amp;lt;/span&amp;gt;&lt;br&gt;
    &amp;lt;span class="p"&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span class="nt"&amp;gt;h2&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt;
      My name is &amp;lt;span class="si"&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class="nx"&amp;gt;props&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span class="nx"&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;span class="si"&amp;gt;}&amp;lt;/span&amp;gt; and I am &amp;lt;span class="si"&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class="nx"&amp;gt;props&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;span class="nx"&amp;gt;age&amp;lt;/span&amp;gt;&amp;lt;span class="si"&amp;gt;}&amp;lt;/span&amp;gt; years old.&lt;br&gt;
    &amp;lt;span class="p"&amp;gt;&amp;amp;lt;/&amp;lt;/span&amp;gt;&amp;lt;span class="nt"&amp;gt;h2&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt;
  &amp;lt;span class="p"&amp;gt;);&amp;lt;/span&amp;gt;&lt;br&gt;
&amp;lt;span class="p"&amp;gt;}&amp;lt;/span&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;span class="k"&amp;gt;export&amp;lt;/span&amp;gt; &amp;lt;span class="k"&amp;gt;default&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;Child&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;;&amp;lt;/span&amp;gt;&lt;br&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Different Data Types&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
React props can be of any data type, including variables, numbers, strings, objects, arrays, and more.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;Strings can be sent inside quotes as in the examples above, but numbers, variables, and objects need to be sent inside curly brackets.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Props Children&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
In React, you can send the content between the opening and closing tags of a component, to another component.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;This can be accessed in the other component using the props.children property.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Destructuring Props&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;
You can limit the properties a component receives by using destructuring.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;p&amp;gt;example:&amp;lt;br&amp;gt;&lt;br&gt;
&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;div class="highlight"&amp;gt;&amp;lt;pre class="highlight javascript"&amp;gt;&amp;lt;code&amp;gt;&amp;lt;span class="kd"&amp;gt;function&amp;lt;/span&amp;gt; &amp;lt;span class="nf"&amp;gt;Child&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;({&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;,&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;age&amp;lt;/span&amp;gt; &amp;lt;span class="p"&amp;gt;})&amp;lt;/span&amp;gt; &amp;lt;span class="p"&amp;gt;{&amp;lt;/span&amp;gt;&lt;br&gt;
  &amp;lt;span class="k"&amp;gt;return &amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;(&amp;lt;/span&amp;gt;&lt;br&gt;
    &amp;lt;span class="o"&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span class="nx"&amp;gt;h2&amp;lt;/span&amp;gt;&amp;lt;span class="o"&amp;gt;&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br&gt;
      &amp;lt;span class="nx"&amp;gt;My&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;name&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;is&amp;lt;/span&amp;gt; &amp;lt;span class="p"&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class="nx"&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;and&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;I&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;am&amp;lt;/span&amp;gt; &amp;lt;span class="p"&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class="nx"&amp;gt;age&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;years&amp;lt;/span&amp;gt; &amp;lt;span class="nx"&amp;gt;old&amp;lt;/span&amp;gt;&amp;lt;span class="p"&amp;gt;.&amp;lt;/span&amp;gt;&lt;br&gt;
    &amp;lt;span class="o"&amp;gt;&amp;amp;lt;&amp;lt;/span&amp;gt;&amp;lt;span class="sr"&amp;gt;/h2&amp;lt;/span&amp;gt;&amp;lt;span class="err"&amp;gt;&amp;amp;gt;&lt;br&gt;
&amp;lt;/span&amp;gt;  &amp;lt;span class="p"&amp;gt;);&amp;lt;/span&amp;gt;&lt;br&gt;
&amp;lt;span class="p"&amp;gt;}&amp;lt;/span&amp;gt;&lt;/p&gt;

&lt;p&gt;&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;

</description>
    </item>
    <item>
      <title>react-2</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Tue, 01 Sep 2026 15:21:14 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/react-3jm0</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/react-3jm0</guid>
      <description>&lt;p&gt;&lt;strong&gt;1)Toggle Button:&lt;br&gt;
    You build a button that switches between:&lt;br&gt;
    "ON" ↔ "OFF"&lt;br&gt;
    What type of state should you use?&lt;br&gt;
    What is the best initial value?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Toggle&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isOn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setisOn&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;buttonText&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isOn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;buttonText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ON&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;buttonText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;OFF&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setisOn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;isOn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;buttonText&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Toggle&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2)Input Field Value:&lt;br&gt;
    You have a text input.&lt;br&gt;
    User types name and you want to display:&lt;br&gt;
    Hello, Vijay&lt;br&gt;
    Why must the input value be stored in useState?&lt;br&gt;
    What happens if you use a normal variable?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handleChange&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChange&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Hello, &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Input&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3)Show/Hide Text&lt;br&gt;
    You want to show paragraph only when button is clicked.&lt;br&gt;
    What kind of state works best?&lt;br&gt;
    Why boolean is suitable here?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Showhide&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;isVisible&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIsVisible&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;toggleText&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isVisible&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setIsVisible&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setIsVisible&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;buttonLabel&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isVisible&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;buttonLabel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hide&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;buttonLabel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Show&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;toggleText&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;buttonLabel&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;isVisible&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;This is the secret text!&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Showhide&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4)Character Counter&lt;br&gt;
    User types in textarea. You show number of characters.&lt;br&gt;
    How do you track text length?&lt;br&gt;
    Should you store both text and length in state?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Crccounter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setText&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;character&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;textarea&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;character&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Character count: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Crccounter&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5)Form with Multiple Inputs&lt;br&gt;
    You have 5 input fields (name, email, phone, city, password).&lt;br&gt;
    Better to use:&lt;br&gt;
    5 separate useState?&lt;br&gt;
    OR one object state?&lt;br&gt;
    Why?&lt;br&gt;
    What problem happens if you update object state incorrectly?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Minputs&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setForm&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;phone&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handleChanger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;setForm&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;



  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="na"&gt;htmlFor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Name&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; 
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; 
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; 
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; 
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
          &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChanger&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
        &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="na"&gt;htmlFor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Email&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; 
          &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; 
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; 
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; 
          &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
          &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChanger&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
        &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="na"&gt;htmlFor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"phone"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Phone&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"phone"&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;phone&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;  &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChanger&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="na"&gt;htmlFor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"city"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;City&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"city"&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChanger&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;  &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt; &lt;span class="na"&gt;htmlFor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Password&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;label&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"password"&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleChanger&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;form&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Entered Name: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Entered Email: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Entered No: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;phone&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Entered location: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Entered code: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Minputs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6) Checkbox Selection List&lt;br&gt;
    User can select multiple skills:&lt;br&gt;
    ☐ React&lt;br&gt;
    ☐ Node&lt;br&gt;
    ☐ Java&lt;br&gt;
    ☐ SQL&lt;br&gt;
    What should be the state type?&lt;br&gt;
    How will you add/remove values from state array?&lt;/p&gt;

&lt;p&gt;7) Dependent Dropdown&lt;br&gt;
    Country → State → City dropdown.&lt;br&gt;
    How will you structure state?&lt;br&gt;
    When country changes, what should happen to state &amp;amp; city?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Cascading&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;country&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setCountry&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handling&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="nf"&gt;setCountry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;


    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;select&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;onChange&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handling&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;select country&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"India"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;India&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Usa"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Usa&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;select&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;select&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;""&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;select state&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="si"&gt;{&lt;/span&gt;
                    &lt;span class="nx"&gt;country&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;India&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
                        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"tamilnadu"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;TamilNadu&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"kerala"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Kerala&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
                &lt;span class="si"&gt;}&lt;/span&gt;
                &lt;span class="si"&gt;{&lt;/span&gt;
                    &lt;span class="nx"&gt;country&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Usa&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
                        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"newyork"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;NewYork&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt; &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"losvegas"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Losvegas&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;option&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
                &lt;span class="si"&gt;}&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;select&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;


    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Cascading&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>React</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Fri, 28 Aug 2026 14:43:59 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/react-24kp</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/react-24kp</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is React?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;React is a JavaScript library created by Facebook for building user interfaces (UI), especially single‑page applications (SPAs).&lt;/p&gt;

&lt;p&gt;It helps developers build reusable components instead of writing repetitive code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why React?&lt;/strong&gt;&lt;br&gt;
Reusable components → less code duplication.&lt;/p&gt;

&lt;p&gt;Fast rendering → thanks to Virtual DOM.&lt;/p&gt;

&lt;p&gt;Strong ecosystem → libraries like React Router, Redux.&lt;/p&gt;

&lt;p&gt;Popular in industry → many companies use it for web apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are Hooks?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hooks are special functions in React that let you use state and other React features in functional components (without needing class components).&lt;/p&gt;

&lt;p&gt;Introduced in React 16.8.&lt;/p&gt;

&lt;p&gt;Common Hooks:&lt;br&gt;
useState → manages state inside a component.&lt;/p&gt;

&lt;p&gt;useEffect → handles side effects (API calls, timers, subscriptions).&lt;/p&gt;

&lt;p&gt;useContext → shares data across components without props.&lt;/p&gt;

&lt;p&gt;useRef → stores a mutable value or references DOM elements.&lt;/p&gt;

&lt;p&gt;useReducer → manages complex state logic (like Redux but simpler).&lt;/p&gt;

&lt;p&gt;Custom Hooks → you can create your own reusable logic starting with use.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing questions</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Fri, 21 Aug 2026 07:19:08 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/js-28e1</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/js-28e1</guid>
      <description>&lt;p&gt;&lt;strong&gt;1)WhatsApp Status – Positive &amp;amp; Negative Test Cases&lt;/strong&gt;&lt;br&gt;
Positive Test Cases&lt;/p&gt;

&lt;p&gt;Upload an image as status → should display correctly.&lt;/p&gt;

&lt;p&gt;Upload a video (≤30 seconds) → should play smoothly.&lt;/p&gt;

&lt;p&gt;Add text-only status → should be visible to contacts.&lt;/p&gt;

&lt;p&gt;Add emojis in status → should render properly.&lt;/p&gt;

&lt;p&gt;Status visible only to “My Contacts” → privacy works.&lt;/p&gt;

&lt;p&gt;Status visible to “Selected Contacts” → restricted view works.&lt;/p&gt;

&lt;p&gt;Status auto‑expires after 24 hours.&lt;/p&gt;

&lt;p&gt;Delete status manually → should disappear immediately.&lt;/p&gt;

&lt;p&gt;Multiple statuses uploaded → all should appear in sequence.&lt;/p&gt;

&lt;p&gt;Status view count should update when contacts watch it.&lt;/p&gt;

&lt;p&gt;Negative Test Cases&lt;/p&gt;

&lt;p&gt;Upload unsupported file format (e.g., .exe) → error message.&lt;/p&gt;

&lt;p&gt;Upload video &amp;gt;30 seconds → should reject.&lt;/p&gt;

&lt;p&gt;Upload corrupted image → should fail gracefully.&lt;/p&gt;

&lt;p&gt;Try to upload status with no internet → should queue or fail.&lt;/p&gt;

&lt;p&gt;Upload status with empty text → should not allow.&lt;/p&gt;

&lt;p&gt;Upload status when storage is full → should show error.&lt;/p&gt;

&lt;p&gt;Upload status with restricted privacy → blocked users should not see.&lt;/p&gt;

&lt;p&gt;Try to view expired status → should not be accessible.&lt;/p&gt;

&lt;p&gt;Upload status with invalid characters in text → should handle safely.&lt;/p&gt;

&lt;p&gt;Upload status during server downtime → should fail with error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2)SDLC (Software Development Life Cycle)&lt;/strong&gt;&lt;br&gt;
Phases of SDLC&lt;/p&gt;

&lt;p&gt;The Software Development Life Cycle (SDLC) is a structured process that defines how software is planned, analyzed, designed, developed, tested, deployed, and maintained to ensure quality and efficiency&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Bug Life Cycle (Defect Life Cycle)&lt;/strong&gt;&lt;br&gt;
States of a Bug&lt;/p&gt;

&lt;p&gt;New → Tester logs defect.&lt;/p&gt;

&lt;p&gt;Assigned → QA lead assigns to developer.&lt;/p&gt;

&lt;p&gt;Open → Developer starts fixing.&lt;/p&gt;

&lt;p&gt;Fixed → Developer claims fix done.&lt;/p&gt;

&lt;p&gt;Pending Retest → Awaiting tester verification.&lt;/p&gt;

&lt;p&gt;Retest → Tester checks fix.&lt;/p&gt;

&lt;p&gt;Verified → Fix confirmed.&lt;/p&gt;

&lt;p&gt;Closed → Defect resolved.&lt;/p&gt;

&lt;p&gt;Reopened → If issue persists after fix.&lt;/p&gt;

&lt;p&gt;Deferred → Valid bug, postponed.&lt;/p&gt;

&lt;p&gt;Rejected → Not a valid defect.&lt;/p&gt;

&lt;p&gt;Duplicate → Already reported.&lt;/p&gt;

&lt;p&gt;Key Rule: Fixed ≠ Closed. Developer marks “Fixed,” but only tester can mark “Closed” after verification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4)Black Box Testing Techniques&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Core Techniques&lt;/p&gt;

&lt;p&gt;Equivalence Partitioning (EP): Divide inputs into valid/invalid sets.&lt;/p&gt;

&lt;p&gt;Boundary Value Analysis (BVA): Test at edges (min, max, just inside/outside).&lt;/p&gt;

&lt;p&gt;Decision Table Testing: Validate combinations of inputs &amp;amp; rules.&lt;/p&gt;

&lt;p&gt;State Transition Testing: Check system behavior when moving between states.&lt;/p&gt;

&lt;p&gt;Use Case Testing: Based on real-world user scenarios.&lt;/p&gt;

&lt;p&gt;Pairwise (All-Pairs) Testing: Cover combinations efficiently.&lt;/p&gt;

&lt;p&gt;Error Guessing: Tester intuition to predict likely defects.&lt;/p&gt;

&lt;p&gt;Exploratory Testing: Ad‑hoc testing without predefined cases.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing-4</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Thu, 20 Aug 2026 14:50:35 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/testing-4-d05</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/testing-4-d05</guid>
      <description>&lt;p&gt;&lt;strong&gt;STLC (Software Testing Life Cycle)&lt;/strong&gt; &lt;br&gt;
It is a structured process with six phases—Requirement Analysis, Test Planning, Test Case Development, Test Environment Setup, Test Execution, and Test Closure—designed to ensure systematic, high‑quality testing.&lt;/p&gt;

&lt;p&gt;Requirement Analysis – Testers study the requirements, clarify doubts, and identify what needs to be tested.&lt;/p&gt;

&lt;p&gt;Test Planning – A strategy is created: scope, objectives, resources, tools, risks, and timelines are defined.&lt;/p&gt;

&lt;p&gt;Test Case Development – Test cases and test data are prepared to cover all requirements.&lt;/p&gt;

&lt;p&gt;Test Environment Setup – The environment (hardware, software, tools, servers) is configured for testing.&lt;/p&gt;

&lt;p&gt;Test Execution – Test cases are run, results are compared with expected outcomes, and defects are logged.&lt;/p&gt;

&lt;p&gt;Test Closure – Testing activities are wrapped up, reports are prepared, metrics are analyzed, and lessons learned are documented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When do you stop preparing Test Cases?&lt;/strong&gt;&lt;br&gt;
    Requirements Traceability Matrix RTM&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API&lt;/strong&gt;&lt;br&gt;
An API (Application Programming Interface) is a set of rules and tools that allows two software applications to communicate with each other. Think of it as a messenger that takes a request from one program, tells another program what to do, and then brings back the response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;br&gt;
When you log in to a website using Google or Facebook, the site uses their Login API to verify your identity.&lt;/p&gt;

&lt;p&gt;When a weather app shows today’s forecast, it calls a Weather API to fetch data from a weather server&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing-3</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Wed, 19 Aug 2026 11:49:06 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/testing-3-n5g</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/testing-3-n5g</guid>
      <description>&lt;p&gt;&lt;strong&gt;SDLC:&lt;/strong&gt;&lt;br&gt;
Software Development Life Cycle: &lt;br&gt;
1) Requirements Gathering&lt;br&gt;
    BRS - By Business Analyst&lt;br&gt;
2) Planning&lt;br&gt;
    Development, Testing &lt;br&gt;
    - WHAT, HOW, WHEN, WHO &lt;br&gt;
    - Functional Testing, Non-Functional Testing &lt;br&gt;
3) Designing&lt;br&gt;
4) Development - Unit Testing, Test Cases Preparation, Integration Testing&lt;br&gt;
5) Testing - End To End Testing / System Testing: Bugs Raise&lt;br&gt;
6) Deployment / Implementation and Maintenance&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type of bugs&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Functional&lt;/strong&gt;&lt;br&gt;
Workflow failures producing an unexpected or illogical application behavior where the actual result differs from the expected result.&lt;/p&gt;

&lt;p&gt;Severity&lt;br&gt;
Medium&lt;/p&gt;

&lt;p&gt;Issue Type&lt;br&gt;
Functional&lt;/p&gt;

&lt;p&gt;Frequency&lt;br&gt;
Every Time&lt;/p&gt;

&lt;p&gt;Environment&lt;br&gt;
All Browsers&lt;/p&gt;

&lt;p&gt;Action Performed&lt;/p&gt;

&lt;p&gt;Open the Opportunities We Provide page&lt;br&gt;
Click the "Apply now" button at the bottom&lt;br&gt;
Expected Result&lt;br&gt;
To see an appropriate page after clicking on the button&lt;/p&gt;

&lt;p&gt;Actual Result&lt;br&gt;
Nothing happens when clicking on the button&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual&lt;/strong&gt;&lt;br&gt;
Visual issues affect the layout and cause user interface distortion such as missing elements or images on a page.&lt;/p&gt;

&lt;p&gt;Severity&lt;br&gt;
Low&lt;/p&gt;

&lt;p&gt;Issue Type&lt;br&gt;
Visual&lt;/p&gt;

&lt;p&gt;Frequency&lt;br&gt;
Every Time&lt;/p&gt;

&lt;p&gt;Environment&lt;br&gt;
All Browsers&lt;/p&gt;

&lt;p&gt;Action Performed&lt;/p&gt;

&lt;p&gt;Open the Articles page&lt;br&gt;
Scroll down to the last article&lt;br&gt;
Expected Result&lt;br&gt;
To see the last articles's image&lt;/p&gt;

&lt;p&gt;Actual Result&lt;br&gt;
The last article's image is broken&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Content&lt;/strong&gt;&lt;br&gt;
Content issues affect the text of a page, such as spelling, grammar and localization errors.&lt;/p&gt;

&lt;p&gt;Severity&lt;br&gt;
Low&lt;/p&gt;

&lt;p&gt;Issue Type&lt;br&gt;
Content&lt;/p&gt;

&lt;p&gt;Frequency&lt;br&gt;
Every Time&lt;/p&gt;

&lt;p&gt;Environment&lt;br&gt;
All Browsers&lt;/p&gt;

&lt;p&gt;Action Performed&lt;/p&gt;

&lt;p&gt;Open the Frequently Asked Questions page&lt;br&gt;
Expected Result&lt;br&gt;
To see the page in English&lt;/p&gt;

&lt;p&gt;Actual Result&lt;br&gt;
Some parts of the page are not translated&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;br&gt;
Problematic slowness or hanging, sluggish interface. Features take longer to load than they should, slow navigation in the application.&lt;/p&gt;

&lt;p&gt;Severity&lt;br&gt;
High&lt;/p&gt;

&lt;p&gt;Issue Type&lt;br&gt;
Performance&lt;/p&gt;

&lt;p&gt;Frequency&lt;br&gt;
Every Time&lt;/p&gt;

&lt;p&gt;Environment&lt;br&gt;
All Browsers&lt;/p&gt;

&lt;p&gt;Action Performed&lt;/p&gt;

&lt;p&gt;Open the Request a Quote page&lt;br&gt;
Expected Result&lt;br&gt;
The page loads in a timely manner&lt;/p&gt;

&lt;p&gt;Actual Result&lt;br&gt;
The page loads infinitely&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crash&lt;/strong&gt;&lt;br&gt;
Application quits or closes unexpectedly while using the features.&lt;/p&gt;

&lt;p&gt;Severity&lt;br&gt;
Critical&lt;/p&gt;

&lt;p&gt;Issue Type&lt;br&gt;
Crash&lt;/p&gt;

&lt;p&gt;Frequency&lt;br&gt;
Every Time&lt;/p&gt;

&lt;p&gt;Environment&lt;br&gt;
All Browsers&lt;/p&gt;

&lt;p&gt;Action Performed&lt;/p&gt;

&lt;p&gt;Open the What We Offer page&lt;br&gt;
Click on the second page button at the bottom&lt;br&gt;
Expected Result&lt;br&gt;
The second page opens as expected&lt;/p&gt;

&lt;p&gt;Actual Result&lt;br&gt;
The entire page including the links and buttons become unresponsive&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bug Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Title: Gpay is not working &lt;br&gt;
Description: Gpay is not working during peak hours between 8 PM and 10 PM &lt;/p&gt;

&lt;p&gt;Severity: High      Priority: &lt;br&gt;
Steps To Reproduce:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open gpay after 8 PM any day. &lt;/li&gt;
&lt;li&gt;Scan any QR Code. &lt;/li&gt;
&lt;li&gt;Initiate payment. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Expected: Payment should be done. &lt;br&gt;
Actual: Payment failed. &lt;/p&gt;

&lt;p&gt;Environment: Samsung Model, Airtel SIM 5G, &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference between alpha testing and beta testing:&lt;/strong&gt;&lt;br&gt;
    Alpha Testing: End Users use and give feedback at developer environment. &lt;br&gt;
    Beta Testing: End Users use and give their feedback in their machines. &lt;/p&gt;

&lt;p&gt;Unit Testing,User Acceptance Testing UAT ,Customer Acceptance Testing CAT which is done by developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diff blw retesting and regression testing&lt;/strong&gt;&lt;br&gt;
Affected Area: Fixed --&amp;gt; Retest&lt;/p&gt;

&lt;p&gt;Affected Area as well as Unaffected Area --&amp;gt; Regression Testing&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diff blw smoke and sanity tesing&lt;/strong&gt;&lt;br&gt;
Smoke Testing: Only the Major Functionalities =&amp;gt; Positive Cases &lt;/p&gt;

&lt;p&gt;Sanity Testing: Only the Major Functionalities =&amp;gt; Positive and Negative Cases.&lt;/p&gt;

&lt;p&gt;(Monkey Testing: Guerilla Testing: AdHoc Testing:)--&amp;gt; Random Testing&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diff blw quality assurance and quality control&lt;/strong&gt;&lt;br&gt;
Quality Assurance: Process Oriented, proactive approach.&lt;br&gt;
Quality Control: Product Oriented, reactive approach&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing-2</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Tue, 18 Aug 2026 14:15:10 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/testing-2-1h2k</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/testing-2-1h2k</guid>
      <description>&lt;p&gt;&lt;strong&gt;1)Web Application - How do you test?&lt;/strong&gt;&lt;br&gt;
1.Requirement Analysis&lt;br&gt;
Understand what the application is supposed to do.&lt;/p&gt;

&lt;p&gt;Example: If it’s a booking site, users should be able to search, book, and pay.&lt;/p&gt;

&lt;p&gt;2.Functional Testing&lt;br&gt;
Check if features work as expected.&lt;/p&gt;

&lt;p&gt;Example test cases:&lt;/p&gt;

&lt;p&gt;Login with valid and invalid credentials.&lt;/p&gt;

&lt;p&gt;Submit a form with required fields missing.&lt;/p&gt;

&lt;p&gt;Add items to cart and checkout.&lt;/p&gt;

&lt;p&gt;3.UI/UX Testing&lt;br&gt;
Verify layout, colors, fonts, and responsiveness.&lt;/p&gt;

&lt;p&gt;Example: Does the site look good on mobile and desktop?&lt;/p&gt;

&lt;p&gt;4.Compatibility Testing&lt;br&gt;
Test on different browsers (Chrome, Firefox, Edge, Safari).&lt;/p&gt;

&lt;p&gt;Example: Ensure buttons and forms behave the same everywhere.&lt;/p&gt;

&lt;p&gt;5.Performance Testing&lt;br&gt;
Check speed and load handling.&lt;/p&gt;

&lt;p&gt;Example: Does the site still work if 100 users log in at once?&lt;/p&gt;

&lt;p&gt;6.Security Testing&lt;br&gt;
Ensure data is safe.&lt;/p&gt;

&lt;p&gt;Example: Test SQL injection, XSS attacks, and secure login.&lt;/p&gt;

&lt;p&gt;7.Database Testing&lt;br&gt;
Verify data is stored and retrieved correctly.&lt;/p&gt;

&lt;p&gt;Example: After booking, does the database show the correct record?&lt;/p&gt;

&lt;p&gt;8.Regression Testing&lt;br&gt;
Re-test old features after new updates.&lt;/p&gt;

&lt;p&gt;Example: If payment gateway is updated, check login and booking still work.&lt;/p&gt;

&lt;p&gt;Simple Interview Answer:&lt;br&gt;&lt;br&gt;
"To test a web application, I start with functional testing to check features like login and forms, then move to UI, compatibility, performance, and security testing. I also do regression testing after updates to ensure nothing breaks."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2)Installed Software - How do you test?&lt;/strong&gt;&lt;br&gt;
Installation Testing:&lt;br&gt;
Verify the software installs correctly with no errors.&lt;/p&gt;

&lt;p&gt;Example: Check if the installer runs, creates necessary files, and shortcuts appear.&lt;/p&gt;

&lt;p&gt;Functional Testing:&lt;br&gt;
Ensure features work as intended.&lt;/p&gt;

&lt;p&gt;Example: If it’s a text editor, test creating, saving, and opening files.&lt;/p&gt;

&lt;p&gt;Compatibility Testing:&lt;br&gt;
Test on different operating systems, versions, and hardware.&lt;/p&gt;

&lt;p&gt;Example: Does the software run on Windows 10, Windows 11, or macOS?&lt;/p&gt;

&lt;p&gt;UI/UX Testing:&lt;br&gt;
Check menus, buttons, and navigation.&lt;/p&gt;

&lt;p&gt;Example: Is the interface user-friendly and consistent?&lt;/p&gt;

&lt;p&gt;Performance Testing:&lt;br&gt;
Measure speed, memory usage, and CPU consumption.&lt;/p&gt;

&lt;p&gt;Example: Does the app slow down when handling large files?&lt;/p&gt;

&lt;p&gt;Security Testing:&lt;br&gt;
Ensure data protection and safe installation.&lt;/p&gt;

&lt;p&gt;Example: Check if the software avoids unauthorized access or malware-like behavior.&lt;/p&gt;

&lt;p&gt;Uninstallation Testing:&lt;br&gt;
Verify the software can be removed cleanly.&lt;/p&gt;

&lt;p&gt;Example: After uninstall, no leftover files or registry entries remain.&lt;/p&gt;

&lt;p&gt;Regression Testing:&lt;br&gt;
After updates or patches, recheck old features.&lt;/p&gt;

&lt;p&gt;Example: If a bug fix is applied, confirm other features still work.&lt;/p&gt;

&lt;p&gt;Simple Interview Answer:&lt;br&gt;&lt;br&gt;
"To test installed software, I start with installation and uninstallation checks, then verify functionality, compatibility across systems, UI, performance, and security. Finally, I do regression testing after updates to ensure stability."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3)Mobile App - How do you test?&lt;/strong&gt;&lt;br&gt;
1.Installation &amp;amp; Launch Testing&lt;br&gt;
Verify the app installs correctly from the store or APK/IPA file.&lt;/p&gt;

&lt;p&gt;Example: Check if the app icon appears and launches without crashing.&lt;/p&gt;

&lt;p&gt;2.Functional Testing&lt;br&gt;
Ensure all features work as intended.&lt;/p&gt;

&lt;p&gt;Example test cases:&lt;/p&gt;

&lt;p&gt;Login/signup with valid and invalid inputs.&lt;/p&gt;

&lt;p&gt;Push notifications appear correctly.&lt;/p&gt;

&lt;p&gt;In‑app purchases complete successfully.&lt;/p&gt;

&lt;p&gt;3.UI/UX Testing&lt;br&gt;
Check design consistency, navigation, and responsiveness.&lt;/p&gt;

&lt;p&gt;Example: Buttons are clickable, text is readable, and layout adapts to screen sizes.&lt;/p&gt;

&lt;p&gt;4.Compatibility Testing&lt;br&gt;
Test on different devices, screen resolutions, and OS versions (Android/iOS).&lt;/p&gt;

&lt;p&gt;Example: Does the app run smoothly on both Android 12 and iOS 16?&lt;/p&gt;

&lt;p&gt;5.Performance Testing&lt;br&gt;
Measure speed, battery usage, and memory consumption.&lt;/p&gt;

&lt;p&gt;Example: Does the app lag when loading large images or data?&lt;/p&gt;

&lt;p&gt;6.Network Testing&lt;br&gt;
Check behavior under different network conditions (Wi‑Fi, 4G, 5G, offline).&lt;/p&gt;

&lt;p&gt;Example: Does the app show an error message when offline?&lt;/p&gt;

&lt;p&gt;7.Security Testing&lt;br&gt;
Verify data protection and secure communication.&lt;/p&gt;

&lt;p&gt;Example: Test for vulnerabilities like insecure login or data leaks.&lt;/p&gt;

&lt;p&gt;8.Interrupt Testing&lt;br&gt;
Check how the app behaves when interrupted.&lt;/p&gt;

&lt;p&gt;Example: Incoming call, SMS, or switching apps while using it.&lt;/p&gt;

&lt;p&gt;9.Uninstallation Testing&lt;br&gt;
Ensure the app can be removed cleanly.&lt;/p&gt;

&lt;p&gt;Example: No leftover files or settings remain after uninstall.&lt;/p&gt;

&lt;p&gt;Simple Interview Answer:&lt;br&gt;&lt;br&gt;
"To test a mobile app, I check installation, functionality, UI/UX, compatibility across devices, performance, network behavior, security, and how it handles interruptions. I also verify clean uninstallation and do regression testing after updates."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4)Bug Reporting - Fields (Severity, Steps To Reproduce, Environment, etc)&lt;/strong&gt;&lt;br&gt;
Bug ID / Title&lt;br&gt;&lt;br&gt;
Short, clear name for the bug.&lt;br&gt;
Example: "Login button not working on mobile."&lt;/p&gt;

&lt;p&gt;Severity&lt;br&gt;&lt;br&gt;
How serious the bug is (e.g., Critical, Major, Minor, Trivial).&lt;br&gt;
Example: Critical – prevents user from logging in.&lt;/p&gt;

&lt;p&gt;Priority&lt;br&gt;&lt;br&gt;
How urgently it should be fixed (e.g., High, Medium, Low).&lt;br&gt;
Example: High – affects all users.&lt;/p&gt;

&lt;p&gt;Environment&lt;br&gt;&lt;br&gt;
Details about where the bug occurred.&lt;br&gt;
Example: Android 12, Chrome browser v105, Wi‑Fi network.&lt;/p&gt;

&lt;p&gt;Steps to Reproduce&lt;br&gt;&lt;br&gt;
Exact actions to recreate the bug.&lt;br&gt;
Example:&lt;/p&gt;

&lt;p&gt;Open app&lt;/p&gt;

&lt;p&gt;Go to login page&lt;/p&gt;

&lt;p&gt;Enter valid credentials&lt;/p&gt;

&lt;p&gt;Click "Login"&lt;br&gt;
→ Button does nothing&lt;/p&gt;

&lt;p&gt;Expected Result&lt;br&gt;&lt;br&gt;
What should happen.&lt;br&gt;
Example: User should be logged in and redirected to dashboard.&lt;/p&gt;

&lt;p&gt;Actual Result&lt;br&gt;&lt;br&gt;
What actually happened.&lt;br&gt;
Example: Login button is unresponsive.&lt;/p&gt;

&lt;p&gt;Screenshots / Logs&lt;br&gt;&lt;br&gt;
Visual proof or error logs to help developers.&lt;br&gt;
Example: Screenshot of blank screen after login click.&lt;/p&gt;

&lt;p&gt;Reporter Details&lt;br&gt;&lt;br&gt;
Who found the bug and when.&lt;br&gt;
Example: Reported by QA tester on 18 Aug 2026.&lt;/p&gt;

&lt;p&gt;Simple Interview Answer:&lt;br&gt;&lt;br&gt;
"A bug report usually contains fields like Title, Severity, Priority, Environment, Steps to Reproduce, Expected vs Actual Result, and supporting evidence like screenshots or logs. This helps developers quickly understand and fix the issue."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5)Compatibility Testing - OS, Browser&lt;/strong&gt; &lt;br&gt;
Compatibility Testing ensures that your application works correctly across different Operating Systems (OS) and Browsers. Here’s how you can approach &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6)Severity vs Priority&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8d1mej5n3hoygy21w4k5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8d1mej5n3hoygy21w4k5.png" alt=" " width="799" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Examples:&lt;br&gt;
High Severity, Low Priority:&lt;/p&gt;

&lt;p&gt;A crash occurs in a rarely used feature.&lt;/p&gt;

&lt;p&gt;Serious technically, but can be fixed later.&lt;/p&gt;

&lt;p&gt;Low Severity, High Priority:&lt;/p&gt;

&lt;p&gt;Company logo is misspelled on the homepage.&lt;/p&gt;

&lt;p&gt;Functionality is fine, but business impact is huge → must fix quickly.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Testing-1</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Mon, 17 Aug 2026 13:39:13 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/testing-1-5fih</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/testing-1-5fih</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is Testing?&lt;/strong&gt;&lt;br&gt;
Software testing is a set of activities to discover defects and evaluate the quality of software work products. These work products,when being tested, are known as test objects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test Objectives&lt;/strong&gt;&lt;br&gt;
The typical test objectives are:&lt;br&gt;
• Evaluating work products such as requirements, user stories, designs, and code&lt;br&gt;
• Causing failures and finding defects&lt;br&gt;
• Ensuring required coverage of a test object&lt;br&gt;
• Reducing the risk level of inadequate software quality&lt;br&gt;
• Verifying whether specified requirements have been fulfilled&lt;br&gt;
• Verifying that a test object complies with contractual, legal, and regulatory requirements&lt;br&gt;
• Providing information to stakeholders to allow them to make informed decisions&lt;br&gt;
• Building confidence in the quality of the test object&lt;br&gt;
• Validating whether the test object is complete and works as expected by the stakeholder&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is testcase&lt;/strong&gt;&lt;br&gt;
A test case is a documented set of conditions, inputs, actions, and expected results used to verify that a software feature works as intended.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Basic Structure of a Test Case&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A typical test case includes:&lt;/p&gt;

&lt;p&gt;Test Case ID: Unique identifier (e.g., TC_001)&lt;br&gt;
Title/Description: What is being tested&lt;br&gt;
Preconditions: Requirements before executing the test&lt;br&gt;
Test Steps: Actions to perform&lt;br&gt;
Test Data: Input values&lt;br&gt;
Expected Result: What should happen&lt;br&gt;
Actual Result: What actually happened (filled during execution)&lt;br&gt;
Status: Pass/Fail&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
| Field           | Value                                                                                              |&lt;br&gt;
| --------------- | -------------------------------------------------------------------------------------------------- |&lt;br&gt;
| Test Case ID    | TC_LOGIN_001                                                                                       |&lt;br&gt;
| Test Scenario   | Verify login with valid credentials                                                                |&lt;br&gt;
| Preconditions   | User account exists                                                                                |&lt;br&gt;
| Test Steps      | 1. Open login page.&lt;br&gt;2. Enter valid username.&lt;br&gt;3. Enter valid password.&lt;br&gt;4. Click &lt;strong&gt;Login&lt;/strong&gt;. |&lt;br&gt;
| Test Data       | Username: &lt;code&gt;john123&lt;/code&gt;&lt;br&gt;Password: &lt;code&gt;Password@123&lt;/code&gt;                                                    |&lt;br&gt;
| Expected Result | User is successfully logged in and redirected to the dashboard.                                    |&lt;br&gt;
| Actual Result   | (Filled during testing)                                                                            |&lt;br&gt;
| Status          | Pass/Fail                                                                                          |&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Test Cases Are Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ensure the application meets requirements.&lt;br&gt;
Help detect defects before release.&lt;br&gt;
Make testing consistent and repeatable.&lt;br&gt;
Provide documentation for future testing.&lt;br&gt;
Improve software quality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is positive and negative test cases&lt;/strong&gt;&lt;br&gt;
Positive test case-A test scenario is a high-level situation or functionality that you want to test&lt;/p&gt;

&lt;p&gt;Test Scenario = What should I test?&lt;br&gt;
Test Case = How exactly will I test it?&lt;/p&gt;

&lt;p&gt;A negative test case checks whether an application handles invalid, unexpected, or incorrect input properly.&lt;/p&gt;

&lt;p&gt;Positive test case → Give correct input and check that it works.&lt;br&gt;
Negative test case → Give incorrect input and check that the system handles it correctly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship blw Test case and test sceneria&lt;/strong&gt;&lt;br&gt;
A test scenario is a high-level requirement, and test cases are the detailed tests created under that scenario.&lt;/p&gt;

&lt;p&gt;Easy example:&lt;/p&gt;

&lt;p&gt;Imagine you are testing a house:&lt;/p&gt;

&lt;p&gt;Test Scenario: Test the house's doors.&lt;br&gt;
Test Cases:&lt;br&gt;
Check front door opens.&lt;br&gt;
Check front door locks.&lt;br&gt;
Check back door opens.&lt;br&gt;
Check back door locks.&lt;br&gt;
Try opening door with wrong key.&lt;/p&gt;

&lt;p&gt;Scenario = What area/functionality are we testing?&lt;br&gt;
Test Case = What specific condition are we checking?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Unit Testing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Unit Testing is testing an individual/smallest component of an application independently.&lt;/p&gt;

&lt;p&gt;Usually, it is performed by developers.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
In a banking application, testing the calculateInterest() function separately is unit testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Integration Testing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Integration Testing checks whether two or more modules/components work correctly when they are combined.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Login Page → Authentication → Database&lt;/p&gt;

&lt;p&gt;We check whether the login page correctly communicates with the authentication module and database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Integration Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The main approaches are:&lt;/p&gt;

&lt;p&gt;Top-Down Integration Testing&lt;br&gt;
Bottom-Up Integration Testing&lt;br&gt;
Big Bang Integration Testing&lt;br&gt;
Sandwich/Hybrid Integration Testing&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference between Stub and Driver&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Both are dummy programs/components used during integration testing.&lt;/p&gt;

&lt;p&gt;Stub&lt;br&gt;&lt;br&gt;
Used in Top-Down integration testing&lt;br&gt;&lt;br&gt;
Acts as a called module&lt;br&gt;
Provides temporary responses to the upper module    &lt;/p&gt;

&lt;p&gt;Driver&lt;br&gt;
Used in Bottom-Up integration testing&lt;br&gt;
Acts as a calling module&lt;br&gt;
Sends test data to the lower module&lt;/p&gt;

&lt;p&gt;Easy way to remember:&lt;/p&gt;

&lt;p&gt;Stub = Called by the module&lt;br&gt;
Driver = Calls the module&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference between Error, Bug and Defect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These terms are often used interchangeably, but there is a useful distinction.&lt;/p&gt;

&lt;p&gt;Error:&lt;br&gt;
A mistake made by a person, usually during requirements, design, or coding.&lt;/p&gt;

&lt;p&gt;Bug:&lt;br&gt;
A problem in the software that causes it to behave incorrectly.&lt;/p&gt;

&lt;p&gt;Defect:&lt;br&gt;
A deviation of the actual software behavior from the expected/required behavior.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Developer writes:&lt;/p&gt;

&lt;p&gt;Total = Price - Tax&lt;/p&gt;

&lt;p&gt;instead of:&lt;/p&gt;

&lt;p&gt;Total = Price + Tax&lt;/p&gt;

&lt;p&gt;Developer's mistake → Error&lt;br&gt;
Incorrect code/behavior → Bug/Defect&lt;br&gt;
Tester identifies the problem → Defect is reported&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference between Top-Down and Bottom-Up Integration Testing&lt;/strong&gt;&lt;br&gt;
Top down:&lt;br&gt;
Testing starts from higher-level modules,Uses Stubs,Lower modules are integrated gradually and Testing proceeds downward&lt;/p&gt;

&lt;p&gt;Bottom up:&lt;br&gt;
Testing starts from lower-level modules,Uses Drivers,Higher modules are integrated gradually and Testing proceeds upward&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Difference between BRS, SRS and FRS&lt;/strong&gt;&lt;br&gt;
| BRS                                 | SRS                                     | FRS                                  |&lt;br&gt;
| ----------------------------------- | --------------------------------------- | ------------------------------------ |&lt;br&gt;
| Business Requirement Specification  | Software Requirement Specification      | Functional Requirement Specification |&lt;br&gt;
| Describes &lt;strong&gt;business requirements&lt;/strong&gt; | Describes overall software requirements | Describes &lt;strong&gt;functional behavior&lt;/strong&gt;    |&lt;br&gt;
| High-level                          | More detailed                           | Detailed functional requirements     |&lt;br&gt;
| Usually business/client oriented    | Client + technical teams                | Mainly development/testing teams     |&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Business requirement:&lt;/p&gt;

&lt;p&gt;"The company needs an online shopping system."&lt;/p&gt;

&lt;p&gt;SRS:&lt;/p&gt;

&lt;p&gt;"The system should allow users to register, login, search products, and make payments."&lt;/p&gt;

&lt;p&gt;FRS:&lt;/p&gt;

&lt;p&gt;"When the user clicks Login with valid credentials, the system should authenticate the user and redirect them to the dashboard."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will Developer do Testing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes.&lt;/p&gt;

&lt;p&gt;Developers normally perform Unit Testing and may also perform some integration and other technical testing.&lt;/p&gt;

&lt;p&gt;Testers/QA engineers primarily perform activities such as:&lt;/p&gt;

&lt;p&gt;Functional Testing&lt;br&gt;
Integration Testing&lt;br&gt;
System Testing&lt;br&gt;
Regression Testing&lt;br&gt;
Smoke/Sanity Testing&lt;br&gt;
Exploratory Testing&lt;/p&gt;

&lt;p&gt;Interview answer:&lt;/p&gt;

&lt;p&gt;"Yes, developers do testing, mainly unit testing. However, dedicated testers independently test the application to identify defects from an end-user perspective."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Test Bed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Test Bed is the environment, hardware, software, tools, data, and configurations required to execute testing.&lt;/p&gt;

&lt;p&gt;For example, a web application's test bed may include:&lt;/p&gt;

&lt;p&gt;Windows/Linux&lt;br&gt;
Chrome/Firefox&lt;br&gt;
Application build&lt;br&gt;
Test database&lt;br&gt;
Test data&lt;br&gt;
Required testing tools&lt;/p&gt;

&lt;p&gt;Simple definition:&lt;/p&gt;

&lt;p&gt;Test Bed = Everything required to perform testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Early Testing is good." Justify.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Early testing means starting testing activities as early as possible in the Software Development Life Cycle (SDLC).&lt;/p&gt;

&lt;p&gt;It is good because:&lt;/p&gt;

&lt;p&gt;Defects are identified early.&lt;br&gt;
Fixing defects is cheaper.&lt;br&gt;
Less time is required to fix problems.&lt;br&gt;
Requirements can be clarified early.&lt;br&gt;
Prevents defects from moving to later stages.&lt;br&gt;
Improves overall software quality.&lt;/p&gt;

&lt;p&gt;Interview answer:&lt;/p&gt;

&lt;p&gt;"Early testing helps identify defects at an early stage, reducing the cost and effort of fixing them. It also helps prevent defects from propagating to later stages."&lt;/p&gt;

&lt;p&gt;This is called the Early Testing Principle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are Cosmetic Bugs?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cosmetic bugs are defects related to the appearance or visual presentation of an application that don't usually affect its core functionality.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;Incorrect font size&lt;br&gt;
Misaligned button&lt;br&gt;
Wrong color&lt;br&gt;
Spelling mistake&lt;br&gt;
Text overlapping&lt;br&gt;
Incorrect spacing&lt;br&gt;
Broken image&lt;br&gt;
UI alignment problems&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;A button works correctly, but its text is slightly cut off.&lt;br&gt;
This is a cosmetic/UI defect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is End-to-End Testing / System Testing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;End-to-End (E2E) Testing verifies the complete application workflow from beginning to end.&lt;/p&gt;

&lt;p&gt;Example: Online Shopping&lt;/p&gt;

&lt;p&gt;Login&lt;br&gt;
↓&lt;br&gt;
Search Product&lt;br&gt;
↓&lt;br&gt;
Add to Cart&lt;br&gt;
↓&lt;br&gt;
Enter Address&lt;br&gt;
↓&lt;br&gt;
Make Payment&lt;br&gt;
↓&lt;br&gt;
Order Confirmation&lt;/p&gt;

&lt;p&gt;Testing this entire flow is End-to-End Testing.&lt;/p&gt;

&lt;p&gt;Important: E2E testing is commonly performed as part of system-level testing, but technically E2E testing and System Testing are not exactly identical.&lt;/p&gt;

&lt;p&gt;System Testing: Tests the complete system against requirements.&lt;br&gt;
E2E Testing: Tests a complete real-world business workflow across the system and, where applicable, integrated systems.&lt;br&gt;
18) What is Cross-Functional Testing?&lt;/p&gt;

&lt;p&gt;Cross-functional testing checks whether different functions/features or departments/modules of an application work together correctly to support a business process.&lt;/p&gt;

&lt;p&gt;For example, in an e-commerce application:&lt;/p&gt;

&lt;p&gt;Customer → Order → Payment → Inventory → Shipping&lt;/p&gt;

&lt;p&gt;Testing the interaction across these different functions is cross-functional testing.&lt;/p&gt;

&lt;p&gt;It focuses on business processes that cross multiple functional areas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test Case Preparation &amp;amp; Execution — WHEN?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an important interview question.&lt;/p&gt;

&lt;p&gt;Test Case Preparation&lt;/p&gt;

&lt;p&gt;Test cases are generally prepared after the requirements are understood and sufficiently finalized, and during the test planning/design phase.&lt;/p&gt;

&lt;p&gt;Typical flow:&lt;/p&gt;

&lt;p&gt;Requirements → Test Planning → Test Scenario → Test Case Preparation → Test Environment/Build → Test Execution&lt;/p&gt;

&lt;p&gt;Test Case Execution&lt;/p&gt;

&lt;p&gt;Test cases are executed when the required build/application is available in the test environment and the environment is ready.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;Developer provides Build 1.0 → QA deploys it to the test environment → Smoke testing → Detailed test-case execution.&lt;/p&gt;

&lt;p&gt;Easy interview answer:&lt;/p&gt;

&lt;p&gt;"Test cases are prepared after analyzing the requirements and before test execution. Test cases are executed when the application build is available, the test environment is ready, and the required preconditions are satisfied."&lt;/p&gt;

</description>
    </item>
    <item>
      <title>postgresql-3</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Sun, 16 Aug 2026 13:40:34 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/postgres-5841</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/postgres-5841</guid>
      <description>&lt;p&gt;STUDENTS AND COURSES:&lt;br&gt;
Learning Objective: Inner Join&lt;/p&gt;

&lt;p&gt;CREATE TABLE courses (&lt;br&gt;
    course_id INT PRIMARY KEY,&lt;br&gt;
    course_name VARCHAR(50)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;CREATE TABLE students (&lt;br&gt;
    student_id INT PRIMARY KEY,&lt;br&gt;
    student_name VARCHAR(50),&lt;br&gt;
    course_id INT REFERENCES courses(course_id)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Sample Data: &lt;br&gt;
INSERT INTO courses VALUES (101, 'Java'), (102, 'Python'), (103, 'Software Testing');&lt;/p&gt;

&lt;p&gt;INSERT INTO students VALUES (1, 'Viyan', 101), (2, 'Kavin', 102), (3, 'Mathi', 101),&lt;br&gt;
(4, 'Arul', 103);&lt;/p&gt;

&lt;p&gt;Questions: &lt;br&gt;
    • Display student name and course name. &lt;br&gt;
    • Display only students who are enrolled in Java. &lt;br&gt;
    • Display students enrolled in Python. &lt;br&gt;
    • Display student name and course name ordered by student name.&lt;br&gt;
Level 2 — Employee &amp;amp; Department&lt;br&gt;
CREATE TABLE departments ( dept_id INT PRIMARY KEY, dept_name VARCHAR(50));&lt;br&gt;
CREATE TABLE employees ( emp_id INT PRIMARY KEY, emp_name VARCHAR(50), salary NUMERIC(10,2), dept_id INT REFERENCES departments(dept_id));&lt;br&gt;
Add appropriate insert queries.&lt;br&gt;&lt;br&gt;
Practice Questions: &lt;br&gt;
    • Display employee name and department name. &lt;br&gt;
    • Display employees working in IT. &lt;br&gt;
    • Display employees earning more than Rs. 50,000 along with their department. &lt;br&gt;
    • Display employees sorted by department name. &lt;br&gt;
    • Display employee name, salary and department name.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Products &amp;amp; Categories
CREATE TABLE categories (category_id INT PRIMARY KEY, category_name VARCHAR(50) NOT NULL);
CREATE TABLE products (product_id INT PRIMARY KEY, product_name VARCHAR(100) NOT NULL, category_id INT, price NUMERIC(10,2), stock INT, FOREIGN KEY (category_id) REFERENCES categories(category_id));
INSERT INTO categories (category_id, category_name) VALUES (1, 'Electronics'),(2, 'Laptops'),(3, 'Mobile Phones'),(4, 'Furniture'),(5, 'Books'),(6, 'Home Appliances');
INSERT INTO products (product_id, product_name, category_id, price, stock) VALUES (101, 'Wireless Mouse', 1, 799, 50), (102, 'Bluetooth Speaker', 1, 1499, 25), (103, 'Dell Laptop', 2, 65000, 10), (104, 'HP Laptop', 2, 58000, 8), (105, 'iPhone 15', 3, 65000, 15), (106, 'Samsung Galaxy', 3, 42000, 20), (107, 'Office Chair', 4, 7500, 12), (108, 'Computer Table', 4, 12000, 5), (109, 'Java Programming Book', 5, 850, 30), (110, 'Python Programming Book', 5, 950, 20), (111, 'Air Conditioner', 6, 45000, 7), (112, 'Microwave Oven', 6, 12000, 9);
Queries to Practice: 
• Display product name and category name.
• Display product name, price and category name.
• Display product name, category name and stock.
• Display products belonging to Electronics.
• Display products whose price is greater than Rs. 50,000.
• Display products from Laptops category costing more than Rs. 60,000.
• Display products whose stock is less than 10.
• Display products from Books category with price less than Rs. 1,000.
• Display all products from Mobile Phones category costing more than Rs. 40,000.
Level 2: 
• Display products from Electronics costing more than Rs. 1,000. 
• Display products from Furniture costing less than Rs. 10,000. 
• Display products from Mobile Phones having stock greater than 10. 
• Display products from Home Appliances costing more than Rs. 20,000. 
• Display products whose price is between Rs. 10,000 and Rs. 50,000, along with their category. 
• Display products from Books where stock is greater than 20. 
• Display products from Laptops where price is less than Rs. 60,000.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;vishwa@vishwa-VivoBook-ASUSLaptop-X421EAY-X413EA:~$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;suod &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; postgres&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;Command 'suod' not found, did you mean:
  command 'sudo' from deb sudo (1.9.15p5-3ubuntu5.24.04.2)
  command 'sudo' from deb sudo-ldap (1.9.15p5-3ubuntu5.24.04.2)
&lt;/span&gt;&lt;span class="gp"&gt;Try: sudo apt install &amp;lt;deb name&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="gp"&gt;vishwa@vishwa-VivoBook-ASUSLaptop-X421EAY-X413EA:~$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; postgres&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;[sudo] password for vishwa:             
&lt;/span&gt;&lt;span class="gp"&gt;postgres@vishwa-VivoBook-ASUSLaptop-X421EAY-X413EA:~$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;psql
&lt;span class="go"&gt;psql (16.14 (Ubuntu 16.14-0ubuntu0.24.04.1))
Type "help" for help.

&lt;/span&gt;&lt;span class="gp"&gt;postgres=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;\c&lt;/span&gt; cinemas
&lt;span class="go"&gt;You are now connected to database "cinemas" as user "postgres".
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from departments&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; dept_id | dept_name 
---------+-----------
       1 | cse
       2 | ece
       3 | eee
       4 | mech
(4 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from employeess&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; emp_id | emp_name |  salary   | dept_id 
--------+----------+-----------+---------
    101 | appu     | 500000.00 |       1
    102 | ragul    | 400000.00 |       2
    103 | vishwa   | 600000.00 |       3
    104 | vinoth   | 700000.00 |       4
(4 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from departments inner &lt;span class="nb"&gt;join &lt;/span&gt;employeess on departments.dept_id&lt;span class="o"&gt;=&lt;/span&gt;employeess.dept_id&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; dept_id | dept_name | emp_id | emp_name |  salary   | dept_id 
---------+-----------+--------+----------+-----------+---------
       1 | cse       |    101 | appu     | 500000.00 |       1
       2 | ece       |    102 | ragul    | 400000.00 |       2
       3 | eee       |    103 | vishwa   | 600000.00 |       3
       4 | mech      |    104 | vinoth   | 700000.00 |       4
(4 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;dept_name,emp_name from departments inner &lt;span class="nb"&gt;join &lt;/span&gt;employeess on departments.dept_id&lt;span class="o"&gt;=&lt;/span&gt;employeess.dept_id&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; dept_name | emp_name 
-----------+----------
 cse       | appu
 ece       | ragul
 eee       | vishwa
 mech      | vinoth
(4 rows)
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from employeess inner &lt;span class="nb"&gt;join &lt;/span&gt;departments on departments.dept_id&lt;span class="o"&gt;=&lt;/span&gt;employeess.dept_id where dept_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'eee'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; emp_id | emp_name |  salary   | dept_id | dept_id | dept_name 
--------+----------+-----------+---------+---------+-----------
    103 | vishwa   | 600000.00 |       3 |       3 | eee
(1 row)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;emp_name,dept_name from employeess inner &lt;span class="nb"&gt;join &lt;/span&gt;departments on departments.dept_id&lt;span class="o"&gt;=&lt;/span&gt;employeess.dept_id having salary &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 500000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "employeess.emp_name" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select emp_name,dept_name from employeess inner join departm...
               ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;emp_name,dept_name from employeess inner &lt;span class="nb"&gt;join &lt;/span&gt;departments on employeess.dept_id&lt;span class="o"&gt;=&lt;/span&gt;departments.dept_id having salary &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 500000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "employeess.emp_name" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select emp_name,dept_name from employeess inner join departm...
               ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;^C
&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;^C
&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;dept_name,emp_name,salary from departments inner &lt;span class="nb"&gt;join &lt;/span&gt;employeess on departments.dept_id&lt;span class="o"&gt;=&lt;/span&gt;employeess.dept_id having salary&amp;gt;500000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "departments.dept_name" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select dept_name,emp_name,salary from departments inner join...
               ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;dept_name,emp_name,salary from departments inner &lt;span class="nb"&gt;join &lt;/span&gt;employeess on departments.dept_id&lt;span class="o"&gt;=&lt;/span&gt;employeess.dept_id where salary&amp;gt;500000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; dept_name | emp_name |  salary   
-----------+----------+-----------
 eee       | vishwa   | 600000.00
 mech      | vinoth   | 700000.00
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;dept_name,emp_name from departments inner &lt;span class="nb"&gt;join &lt;/span&gt;employeess on departments.dept_id&lt;span class="o"&gt;=&lt;/span&gt;employeess.dept_id where salary&amp;gt;500000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; dept_name | emp_name 
-----------+----------
 eee       | vishwa
 mech      | vinoth
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;emp_name from employeess inner &lt;span class="nb"&gt;join &lt;/span&gt;departments on employeess.dept_id&lt;span class="o"&gt;=&lt;/span&gt;departments.dept_id order by dept_name&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; emp_name 
----------
 appu
 ragul
 vishwa
 vinoth
(4 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;dept_name,emp_name,salary from departments inner &lt;span class="nb"&gt;join &lt;/span&gt;employeess on departments.dept_id&lt;span class="o"&gt;=&lt;/span&gt;employeess.dept_id&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; dept_name | emp_name |  salary   
-----------+----------+-----------
 cse       | appu     | 500000.00
 ece       | ragul    | 400000.00
 eee       | vishwa   | 600000.00
 mech      | vinoth   | 700000.00
(4 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;CREATE TABLE categories &lt;span class="o"&gt;(&lt;/span&gt;category_id INT PRIMARY KEY, category_name VARCHAR&lt;span class="o"&gt;(&lt;/span&gt;50&lt;span class="o"&gt;)&lt;/span&gt; NOT NULL&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="gp"&gt;CREATE TABLE products (product_id INT PRIMARY KEY, product_name VARCHAR(100) NOT NULL, category_id INT, price NUMERIC(10,2), stock INT, FOREIGN KEY (category_id) REFERENCES categories(category_id));&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;CREATE TABLE
ERROR:  relation "products" already exists
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;200~CREATE TABLE products &lt;span class="o"&gt;(&lt;/span&gt;product_id INT PRIMARY KEY, product_name VARCHAR&lt;span class="o"&gt;(&lt;/span&gt;100&lt;span class="o"&gt;)&lt;/span&gt; NOT NULL, category_id INT, price NUMERIC&lt;span class="o"&gt;(&lt;/span&gt;10,2&lt;span class="o"&gt;)&lt;/span&gt;, stock INT, FOREIGN KEY &lt;span class="o"&gt;(&lt;/span&gt;category_id&lt;span class="o"&gt;)&lt;/span&gt; REFERENCES categories&lt;span class="o"&gt;(&lt;/span&gt;category_id&lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  syntax error at or near "["
LINE 1: [200~CREATE TABLE products (product_id INT PRIMARY KEY, prod...
        ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from categories&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; category_id | category_name 
-------------+---------------
(0 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;CREATE TABLE product &lt;span class="o"&gt;(&lt;/span&gt;product_id INT PRIMARY KEY, product_name VARCHAR&lt;span class="o"&gt;(&lt;/span&gt;100&lt;span class="o"&gt;)&lt;/span&gt; NOT NULL, category_id INT, price NUMERIC&lt;span class="o"&gt;(&lt;/span&gt;10,2&lt;span class="o"&gt;)&lt;/span&gt;, stock INT, FOREIGN KEY &lt;span class="o"&gt;(&lt;/span&gt;category_id&lt;span class="o"&gt;)&lt;/span&gt; REFERENCES categories&lt;span class="o"&gt;(&lt;/span&gt;category_id&lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;CREATE TABLE
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;INSERT INTO categories &lt;span class="o"&gt;(&lt;/span&gt;category_id, category_name&lt;span class="o"&gt;)&lt;/span&gt; VALUES &lt;span class="o"&gt;(&lt;/span&gt;1, &lt;span class="s1"&gt;'Electronics'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;2, &lt;span class="s1"&gt;'Laptops'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;3, &lt;span class="s1"&gt;'Mobile Phones'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;4, &lt;span class="s1"&gt;'Furniture'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;5, &lt;span class="s1"&gt;'Books'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;,&lt;span class="o"&gt;(&lt;/span&gt;6, &lt;span class="s1"&gt;'Home Appliances'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="gp"&gt;INSERT INTO product (product_id, product_name, category_id, price, stock) VALUES (101, 'Wireless Mouse', 1, 799, 50), (102, 'Bluetooth Speaker', 1, 1499, 25), (103, 'Dell Laptop', 2, 65000, 10), (104, 'HP Laptop', 2, 58000, 8), (105, 'iPhone 15', 3, 65000, 15), (106, 'Samsung Galaxy', 3, 42000, 20), (107, 'Office Chair', 4, 7500, 12), (108, 'Computer Table', 4, 12000, 5), (109, 'Java Programming Book', 5, 850, 30), (110, 'Python Programming Book', 5, 950, 20), (111, 'Air Conditioner', 6, 45000, 7), (112, 'Microwave Oven', 6, 12000, 9);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;INSERT 0 6
INSERT 0 12
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from categories&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; category_id |  category_name  
-------------+-----------------
           1 | Electronics
           2 | Laptops
           3 | Mobile Phones
           4 | Furniture
           5 | Books
           6 | Home Appliances
(6 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from product&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_id |      product_name       | category_id |  price   | stock 
------------+-------------------------+-------------+----------+-------
        101 | Wireless Mouse          |           1 |   799.00 |    50
        102 | Bluetooth Speaker       |           1 |  1499.00 |    25
        103 | Dell Laptop             |           2 | 65000.00 |    10
        104 | HP Laptop               |           2 | 58000.00 |     8
        105 | iPhone 15               |           3 | 65000.00 |    15
        106 | Samsung Galaxy          |           3 | 42000.00 |    20
        107 | Office Chair            |           4 |  7500.00 |    12
        108 | Computer Table          |           4 | 12000.00 |     5
        109 | Java Programming Book   |           5 |   850.00 |    30
        110 | Python Programming Book |           5 |   950.00 |    20
        111 | Air Conditioner         |           6 | 45000.00 |     7
        112 | Microwave Oven          |           6 | 12000.00 |     9
(12 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.^C
&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; category_id |  category_name  | product_id |      product_name       | category_id |  price   | stock 
-------------+-----------------+------------+-------------------------+-------------+----------+-------
           1 | Electronics     |        101 | Wireless Mouse          |           1 |   799.00 |    50
           1 | Electronics     |        102 | Bluetooth Speaker       |           1 |  1499.00 |    25
           2 | Laptops         |        103 | Dell Laptop             |           2 | 65000.00 |    10
           2 | Laptops         |        104 | HP Laptop               |           2 | 58000.00 |     8
           3 | Mobile Phones   |        105 | iPhone 15               |           3 | 65000.00 |    15
           3 | Mobile Phones   |        106 | Samsung Galaxy          |           3 | 42000.00 |    20
           4 | Furniture       |        107 | Office Chair            |           4 |  7500.00 |    12
           4 | Furniture       |        108 | Computer Table          |           4 | 12000.00 |     5
           5 | Books           |        109 | Java Programming Book   |           5 |   850.00 |    30
           5 | Books           |        110 | Python Programming Book |           5 |   950.00 |    20
           6 | Home Appliances |        111 | Air Conditioner         |           6 | 45000.00 |     7
           6 | Home Appliances |        112 | Microwave Oven          |           6 | 12000.00 |     9
(12 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name,category_name from product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;      product_name       |  category_name  
-------------------------+-----------------
 Wireless Mouse          | Electronics
 Bluetooth Speaker       | Electronics
 Dell Laptop             | Laptops
 HP Laptop               | Laptops
 iPhone 15               | Mobile Phones
 Samsung Galaxy          | Mobile Phones
 Office Chair            | Furniture
 Computer Table          | Furniture
 Java Programming Book   | Books
 Python Programming Book | Books
 Air Conditioner         | Home Appliances
 Microwave Oven          | Home Appliances
(12 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name,price,category_name, from product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  syntax error at or near "from"
LINE 1: select product_name,price,category_name, from product inner ...
                                                 ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name,price,category_name from product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;      product_name       |  price   |  category_name  
-------------------------+----------+-----------------
 Wireless Mouse          |   799.00 | Electronics
 Bluetooth Speaker       |  1499.00 | Electronics
 Dell Laptop             | 65000.00 | Laptops
 HP Laptop               | 58000.00 | Laptops
 iPhone 15               | 65000.00 | Mobile Phones
 Samsung Galaxy          | 42000.00 | Mobile Phones
 Office Chair            |  7500.00 | Furniture
 Computer Table          | 12000.00 | Furniture
 Java Programming Book   |   850.00 | Books
 Python Programming Book |   950.00 | Books
 Air Conditioner         | 45000.00 | Home Appliances
 Microwave Oven          | 12000.00 | Home Appliances
(12 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name,category_name,stock from product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;      product_name       |  category_name  | stock 
-------------------------+-----------------+-------
 Wireless Mouse          | Electronics     |    50
 Bluetooth Speaker       | Electronics     |    25
 Dell Laptop             | Laptops         |    10
 HP Laptop               | Laptops         |     8
 iPhone 15               | Mobile Phones   |    15
 Samsung Galaxy          | Mobile Phones   |    20
 Office Chair            | Furniture       |    12
 Computer Table          | Furniture       |     5
 Java Programming Book   | Books           |    30
 Python Programming Book | Books           |    20
 Air Conditioner         | Home Appliances |     7
 Microwave Oven          | Home Appliances |     9
(12 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on roduct.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Electronics'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  syntax error at or near "inner"
LINE 1: select product_name product inner join categories on roduct....
                                    ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Electronics'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;   product_name    
-------------------
 Wireless Mouse
 Bluetooth Speaker
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where price&amp;gt;500000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
(0 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where price&amp;gt;50000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
 Dell Laptop
 HP Laptop
 iPhone 15
(3 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Laptop'&lt;/span&gt; having laptop &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 60000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "laptop" does not exist
&lt;/span&gt;&lt;span class="gp"&gt;LINE 1: ...s.category_id where category_name='Laptop' having laptop &amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;6...
&lt;span class="go"&gt;                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Laptop'&lt;/span&gt; having Laptop&amp;gt;60000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "laptop" does not exist
&lt;/span&gt;&lt;span class="gp"&gt;LINE 1: ...s.category_id where category_name='Laptop' having Laptop&amp;gt;&lt;/span&gt;600...
&lt;span class="go"&gt;                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where Laptop&amp;gt;60000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "laptop" does not exist
&lt;/span&gt;&lt;span class="gp"&gt;LINE 1: ... product.category_id=categories.category_id where Laptop&amp;gt;&lt;/span&gt;600...
&lt;span class="go"&gt;                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where price&amp;gt;500000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
(0 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;elect product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Laptop'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  syntax error at or near "elect"
LINE 1: elect product_name from  product inner join categories on pr...
        ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Laptop'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
(0 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Laptops'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
 Dell Laptop
 HP Laptop
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Laptops'&lt;/span&gt; having Laptops&amp;gt;60000 &lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "laptops" does not exist
&lt;/span&gt;&lt;span class="gp"&gt;LINE 1: ....category_id where category_name='Laptops' having Laptops&amp;gt;&lt;/span&gt;60...
&lt;span class="go"&gt;                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where Laptops&amp;gt;60000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "laptops" does not exist
&lt;/span&gt;&lt;span class="gp"&gt;LINE 1: ... product.category_id=categories.category_id where Laptops&amp;gt;&lt;/span&gt;60...
&lt;span class="go"&gt;                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name,category_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where Laptops&amp;gt;60000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "laptops" does not exist
&lt;/span&gt;&lt;span class="gp"&gt;LINE 1: ... product.category_id=categories.category_id where Laptops&amp;gt;&lt;/span&gt;60...
&lt;span class="go"&gt;                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Laptops'&lt;/span&gt; and price&amp;gt;60000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
 Dell Laptop
(1 row)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where stock&amp;lt;10&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name   
-----------------
 HP Laptop
 Computer Table
 Air Conditioner
 Microwave Oven
(4 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Books'&lt;/span&gt; and price&amp;lt;1000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;      product_name       
-------------------------
 Java Programming Book
 Python Programming Book
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Mobile Phones'&lt;/span&gt; and price&amp;gt;40000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name  
----------------
 iPhone 15
 Samsung Galaxy
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Electronics'&lt;/span&gt; and price&amp;gt;1000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;   product_name    
-------------------
 Bluetooth Speaker
(1 row)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Furniture'&lt;/span&gt; and price&amp;gt;10000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name  
----------------
 Computer Table
(1 row)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Mobile Phones'&lt;/span&gt; and stock&amp;gt;10&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name  
----------------
 iPhone 15
 Samsung Galaxy
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;' Home Appliances'&lt;/span&gt; and price&amp;gt;20000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
(0 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Home Appliances'&lt;/span&gt; and price&amp;gt;20000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name   
-----------------
 Air Conditioner
(1 row)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name,category_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where price between 10000 and 50000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name   |  category_name  
-----------------+-----------------
 Samsung Galaxy  | Mobile Phones
 Computer Table  | Furniture
 Air Conditioner | Home Appliances
 Microwave Oven  | Home Appliances
(4 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Books'&lt;/span&gt; and stock&amp;gt;20&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;     product_name      
-----------------------
 Java Programming Book
(1 row)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'Laptops'&lt;/span&gt; and price&amp;lt;60000&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
 HP Laptop
(1 row)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where price&amp;gt;40000 and stock&amp;gt;10&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name  
----------------
 Samsung Galaxy
 iPhone 15
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where &lt;span class="nv"&gt;category_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Laptops'&lt;/span&gt; or &lt;span class="s1"&gt;'Mobile Phones'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  invalid input syntax for type boolean: "Mobile Phones"
LINE 1: ...ies.category_id where category_name= 'Laptops' or 'Mobile Ph...
                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where c.category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Laptops'&lt;/span&gt; or c.category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Mobile Phones'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  missing FROM-clause entry for table "c"
LINE 1: ... product.category_id=categories.category_id where c.category...
                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Laptops'&lt;/span&gt; or category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Mobile Phones'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name  
----------------
 Dell Laptop
 HP Laptop
 iPhone 15
 Samsung Galaxy
(4 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Books'&lt;/span&gt; or category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Electronics'&lt;/span&gt; and price&amp;gt;1000&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="go"&gt;      product_name       
-------------------------
 Bluetooth Speaker
 Java Programming Book
 Python Programming Book
(3 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Books'&lt;/span&gt; price &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; 1000 or category_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Electronics'&lt;/span&gt; and price&amp;gt;1000&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="go"&gt;ERROR:  syntax error at or near "price"
&lt;/span&gt;&lt;span class="gp"&gt;LINE 1: ...egories.category_id where category_name = 'Books' price &amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;10...
&lt;span class="go"&gt;                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where c.category_name &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Books'&lt;/span&gt; , &lt;span class="s1"&gt;'Electronics'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; and price&amp;gt;1000&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="go"&gt;ERROR:  missing FROM-clause entry for table "c"
LINE 1: ... product.category_id=categories.category_id where c.category...
                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where category_name &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Books'&lt;/span&gt; , &lt;span class="s1"&gt;'Electronics'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; and price&amp;gt;1000&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="go"&gt;   product_name    
-------------------
 Bluetooth Speaker
(1 row)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name from  product inner &lt;span class="nb"&gt;join &lt;/span&gt;categories on product.category_id&lt;span class="o"&gt;=&lt;/span&gt;categories.category_id where category_name not &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Books'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="go"&gt;   product_name    
-------------------
 Wireless Mouse
 Bluetooth Speaker
 Dell Laptop
 HP Laptop
 iPhone 15
 Samsung Galaxy
 Office Chair
 Computer Table
 Air Conditioner
 Microwave Oven
(10 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;category_name from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where name like &lt;span class="s1"&gt;'M%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "name" does not exist
LINE 1: ... categories.category_id=product.category_id where name like ...
                                                             ^
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product__name from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where category_name like &lt;span class="s1"&gt;'M%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "product__name" does not exist
LINE 1: select product__name from categories inner join product on c...
               ^
HINT:  Perhaps you meant to reference the column "product.product_name".
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;category__name from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where category_name like &lt;span class="s1"&gt;'M%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;ERROR:  column "category__name" does not exist
LINE 1: select category__name from categories inner join product on ...
               ^
HINT:  Perhaps you meant to reference the column "categories.category_name".
&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;  from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where category_name like &lt;span class="s1"&gt;'M%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; category_id | category_name | product_id |  product_name  | category_id |  price   | stock 
-------------+---------------+------------+----------------+-------------+----------+-------
           3 | Mobile Phones |        105 | iPhone 15      |           3 | 65000.00 |    15
           3 | Mobile Phones |        106 | Samsung Galaxy |           3 | 42000.00 |    20
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name  from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where category_name like &lt;span class="s1"&gt;'M%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name  
----------------
 iPhone 15
 Samsung Galaxy
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name  from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where category_name like &lt;span class="s1"&gt;'Phone%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt; product_name 
--------------
(0 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name  from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where category_name like &lt;span class="s1"&gt;'%Phone%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name  
----------------
 iPhone 15
 Samsung Galaxy
(2 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name  from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where price&amp;gt;10000 and price&amp;lt;60000 &lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name   
-----------------
 HP Laptop
 Samsung Galaxy
 Computer Table
 Air Conditioner
 Microwave Oven
(5 rows)

&lt;/span&gt;&lt;span class="gp"&gt;cinemas=#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;select &lt;/span&gt;product_name  from categories inner &lt;span class="nb"&gt;join &lt;/span&gt;product on categories.category_id&lt;span class="o"&gt;=&lt;/span&gt;product.category_id where price&amp;gt;10000 and price&amp;lt;60000 and stock&amp;gt;8&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="go"&gt;  product_name  
----------------
 Samsung Galaxy
 Microwave Oven
(2 rows)

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>postgresql</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Sat, 15 Aug 2026 13:23:04 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/postgresql-2iei</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/postgresql-2iei</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction to DDL (Data Definition Language) in SQL&lt;/strong&gt;&lt;br&gt;
When we talk about databases, we usually think of inserting, updating, or deleting data. But before doing any of that, we must first define the structure the blueprint of how data will be stored.&lt;/p&gt;

&lt;p&gt;That’s where DDL (Data Definition Language) comes in.&lt;/p&gt;

&lt;p&gt;It is a subset of SQL used to define, modify, or remove database structures such as tables, schemas, indexes, and views&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; 
&lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="nb"&gt;SERIAL&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;UNIQUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;CHECK&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt; &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="n"&gt;created_at&lt;/span&gt; &lt;span class="nb"&gt;TIMESTAMP&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt; &lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;phone&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;TRUNCATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;customers&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The CREATE TABLE Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The most frequently used DDL command is CREATE TABLE.&lt;br&gt;
It defines the structure of a table the columns, their data types, and constraints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding Constraints&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Constraints help maintain data integrity and define rules for your data.&lt;/p&gt;

&lt;p&gt;Let’s understand all of them with examples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PRIMARY KEY&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A PRIMARY KEY uniquely identifies each record in the table and doesn’t allow NULL values.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="nb"&gt;SERIAL&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="nb"&gt;NUMERIC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;joining_date&lt;/span&gt; &lt;span class="nb"&gt;DATE&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NOT NULL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ensures a column cannot have NULL values.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="nb"&gt;SERIAL&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="nb"&gt;NUMERIC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;joining_date&lt;/span&gt; &lt;span class="nb"&gt;DATE&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;UNIQUE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ensures all values in a column are different (can allow a single NULL).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="nb"&gt;SERIAL&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;UNIQUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CHECK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Adds a condition that must be satisfied for every row.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="nb"&gt;SERIAL&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="nb"&gt;NUMERIC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;CHECK&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;joining_date&lt;/span&gt; &lt;span class="nb"&gt;DATE&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DEFAULT&lt;/p&gt;

&lt;p&gt;Assigns a default value if no value is provided.&lt;/p&gt;

&lt;p&gt;CREATE TABLE employees (&lt;br&gt;
    emp_id SERIAL PRIMARY KEY,&lt;br&gt;
    emp_name VARCHAR(100) NOT NULL,&lt;br&gt;
    salary NUMERIC(10,2) DEFAULT 30000,&lt;br&gt;
    joining_date DATE DEFAULT CURRENT_DATE&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;If salary or joining_date isn’t given, PostgreSQL fills them automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FOREIGN KEY&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Creates a link between two tables ensuring referential integrity.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="nb"&gt;SERIAL&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dept_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;emp_id&lt;/span&gt; &lt;span class="nb"&gt;SERIAL&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;emp_name&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;dept_id&lt;/span&gt; &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;REFERENCES&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dept_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;CASCADE&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>python</title>
      <dc:creator>vishwa v</dc:creator>
      <pubDate>Wed, 12 Aug 2026 15:23:06 +0000</pubDate>
      <link>https://dev.to/vishwa_v_04111c0586f440b6/python-4j1n</link>
      <guid>https://dev.to/vishwa_v_04111c0586f440b6/python-4j1n</guid>
      <description>&lt;p&gt;**Two trains stop at regular intervals:&lt;br&gt;
        Train 1 stops at every 3rd station.&lt;br&gt;
        Train 2 stops at every 5th station.&lt;br&gt;
Find:&lt;br&gt;
    The first common station where both trains stop.&lt;br&gt;
    The last common station where both trains stop.&lt;br&gt;
    All common stations where both trains stop.&lt;/p&gt;

&lt;p&gt;Note: Total Number of Stations are unknown.**&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;station&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="n"&gt;last_station&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;station&lt;/span&gt;
&lt;span class="n"&gt;first_station&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;station&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;station&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;station&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;first_station&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;First Station is: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;station&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;first_station&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;station&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#15   30   45  60  75
&lt;/span&gt;        &lt;span class="n"&gt;last_station&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;station&lt;/span&gt;   
    &lt;span class="n"&gt;station&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Last Common Station is&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_station&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;** Tenali Raman and the Palace Guards&lt;/p&gt;

&lt;p&gt;Tenali Raman wishes to meet the King. Before reaching the royal court, he has to pass through many palace gates. A guard is posted at each gate.&lt;/p&gt;

&lt;p&gt;Every guard demands a share of whatever reward Tenali Raman receives from the King. Tenali Raman agrees and promises:&lt;br&gt;
"I will give you half of whatever reward I receive from the King."&lt;/p&gt;

&lt;p&gt;All the guards allow him to enter. After meeting the King, Tenali Raman receives a reward of 1024 lashes.&lt;/p&gt;

&lt;p&gt;Keeping his promise, Tenali Raman shares his reward with the guards. At each gate, he gives half of the lashes he still has to receive to the guard at that gate and proceeds to the next gate.&lt;/p&gt;

&lt;p&gt;Write a program to determine:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;How many lashes each guard receives.
How many Guards are there if Tenali Raman gets only one lash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;**&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;lashes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;
&lt;span class="n"&gt;gaurd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;lashes&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="n"&gt;lashes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;lashes&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
   &lt;span class="n"&gt;gaurd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;gaurd&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gaurd&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;output:&lt;br&gt;
10&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
