<?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: Subash</title>
    <description>The latest articles on DEV Community by Subash (@iamsubash).</description>
    <link>https://dev.to/iamsubash</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4059268%2Fc95fe638-e836-438d-9aa6-ed2c55e529c2.webp</url>
      <title>DEV Community: Subash</title>
      <link>https://dev.to/iamsubash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iamsubash"/>
    <language>en</language>
    <item>
      <title>useEffect-Hooks</title>
      <dc:creator>Subash</dc:creator>
      <pubDate>Thu, 01 Oct 2026 13:38:20 +0000</pubDate>
      <link>https://dev.to/iamsubash/useeffect-hooks-17lg</link>
      <guid>https://dev.to/iamsubash/useeffect-hooks-17lg</guid>
      <description>&lt;h2&gt;
  
  
  1. Run Only Once
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Print "Component Mounted" only once when page loads.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  - How will you write useEffect?
&lt;/h4&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%2F0vlndp7ndalrv84fbw6y.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%2F0vlndp7ndalrv84fbw6y.png" alt=" " width="381" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  - What should be in dependency array? Why?
&lt;/h4&gt;

&lt;p&gt;The dependency array should be an empty array [ ].&lt;/p&gt;

&lt;p&gt;An empty dependency array tells React to run the useEffect after the component's initial render, so the effect runs only once when the component is mounted.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Run on Every Render
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Print "Rendered" on every render.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  - How will you write useEffect?
&lt;/h4&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%2Fpda5t7967yssx8qivocm.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%2Fpda5t7967yssx8qivocm.png" alt=" " width="400" height="111"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  - What happens if dependency array is not provided?
&lt;/h4&gt;

&lt;p&gt;If we don't provide a dependency array, the useEffect will run after every render of the component.&lt;/p&gt;

&lt;p&gt;For example, if the component renders 5 times, the useEffect will also run 5 times.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Run When State Changes
&lt;/h2&gt;

&lt;p&gt;const [count, setCount] = useState(0);&lt;br&gt;
Log "Count changed" only when count changes.&lt;/p&gt;

&lt;h4&gt;
  
  
  - What should dependency array contain?
&lt;/h4&gt;

&lt;p&gt;The dependency array should contain the count variable.&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%2Fit71l7pg8lzd663xay71.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%2Fit71l7pg8lzd663xay71.png" alt=" " width="413" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This means the useEffect will run whenever the count value changes.&lt;/p&gt;

&lt;h4&gt;
  
  
  - What happens if it is empty [ ]?
&lt;/h4&gt;

&lt;p&gt;If the dependency array is empty [ ], the useEffect will run only once after the component's initial render.&lt;/p&gt;

&lt;p&gt;It will not run again when count changes.&lt;/p&gt;

&lt;p&gt;So, if we want the effect to run whenever count changes, we need to put count in the dependency array: [count]&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Two States, One Effect
&lt;/h2&gt;

&lt;p&gt;const [count, setCount] = useState(0);&lt;br&gt;
const [name, setName] = useState("");&lt;br&gt;
Run effect when count OR name changes.&lt;/p&gt;

&lt;h4&gt;
  
  
  - How will dependency array look?
&lt;/h4&gt;

&lt;p&gt;The dependency array should contain both count and name:&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%2F5mmd7v26ckimf6o9m0sf.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%2F5mmd7v26ckimf6o9m0sf.png" alt=" " width="609" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This means the useEffect will run whenever count changes OR name changes.&lt;/p&gt;

&lt;h4&gt;
  
  
  - What if only count is added?
&lt;/h4&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%2Flkabinkbkzqx47xfp0u2.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%2Flkabinkbkzqx47xfp0u2.png" alt=" " width="287" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The useEffect will run whenever count changes.&lt;/p&gt;

&lt;p&gt;Changes to name will not trigger this useEffect because name is not included in the dependency array.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Derived Logic
&lt;/h2&gt;

&lt;p&gt;Show "Even Number" whenever count becomes even.&lt;/p&gt;

&lt;h4&gt;
  
  
  - Should this logic be inside render or useEffect? Why?
&lt;/h4&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%2Fa6ibr51ixmq8dfaznm7r.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%2Fa6ibr51ixmq8dfaznm7r.png" alt=" " width="557" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The logic is inside useEffect because we want to perform the console log when count changes. The [count] dependency makes the UseEffect to run whenever count changes, and the if condition checks whether the new count is even.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. API Call on Mount
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fetch users when component loads.
&lt;/h3&gt;

&lt;h4&gt;
  
  
  - Why do we use [ ]?
&lt;/h4&gt;

&lt;p&gt;We use an empty dependency array [ ] because we want the API call to run only after the component's initial render&lt;/p&gt;

&lt;h4&gt;
  
  
  - What happens if we remove [ ]?
&lt;/h4&gt;

&lt;p&gt;If we remove [ ], the useEffect runs after every render. Therefore, the API call will be made after every render, which can cause unnecessary API requests and may lead to performance problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Infinite Loop Trap
&lt;/h2&gt;

&lt;h3&gt;
  
  
  useEffect(() =&amp;gt; {
&lt;/h3&gt;

&lt;h3&gt;
  
  
  setCount(count + 1);
&lt;/h3&gt;

&lt;h3&gt;
  
  
  }, [count]);
&lt;/h3&gt;

&lt;h4&gt;
  
  
  - What will happen?
&lt;/h4&gt;

&lt;p&gt;The setCount will increase the count value. Since count is in the dependency array, the useEffect will run again whenever count changes, creating an infinite loop.&lt;/p&gt;

&lt;h4&gt;
  
  
  - Why does this cause infinite re-render?
&lt;/h4&gt;

&lt;p&gt;Since count is in the dependency array, changing count triggers the effect again, which changes count again, causing an infinite re-render loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Fix the Infinite Loop
&lt;/h2&gt;

&lt;h4&gt;
  
  
  - How can you increment count only once using useEffect?
&lt;/h4&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%2Fyp08a59ki1j8n17k653r.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%2Fyp08a59ki1j8n17k653r.png" alt=" " width="292" height="75"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we give an empty dependency array [ ], the useEffect will run only once after the initial render. Therefore, setCount will increment the count only once, avoiding the infinite loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Document Title Sync
&lt;/h2&gt;

&lt;h3&gt;
  
  
  useEffect(() =&amp;gt; {
&lt;/h3&gt;

&lt;h3&gt;
  
  
  document.title = count;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  }, [?]);
&lt;/h3&gt;

&lt;h4&gt;
  
  
  - What should go inside ? Why?
&lt;/h4&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%2Fgb32q7z42yexfu94cl79.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%2Fgb32q7z42yexfu94cl79.png" alt=" " width="312" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We should put &lt;strong&gt;&lt;code&gt;count&lt;/code&gt;&lt;/strong&gt; inside the dependency array because whenever &lt;code&gt;count&lt;/code&gt; changes, the &lt;code&gt;useEffect&lt;/code&gt; will run and update the document title with the new &lt;code&gt;count&lt;/code&gt; value.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Cleanup Basic
&lt;/h2&gt;

&lt;h3&gt;
  
  
  useEffect(() =&amp;gt; {
&lt;/h3&gt;

&lt;h3&gt;
  
  
  window.addEventListener("click", handleClick);
&lt;/h3&gt;

&lt;h3&gt;
  
  
  });
&lt;/h3&gt;

&lt;h4&gt;
  
  
  - What problem may happen?
&lt;/h4&gt;

&lt;p&gt;Without cleanup, a new click event listener will be added on every render. This can cause the handleClick function to run multiple times for a single click.&lt;/p&gt;

&lt;h4&gt;
  
  
  - How to fix properly?
&lt;/h4&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%2F9rsalaocx0sxis14jlxv.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%2F9rsalaocx0sxis14jlxv.png" alt=" " width="508" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  - When does cleanup run?
&lt;/h4&gt;

&lt;p&gt;The cleanup function runs before the effect runs again and when the component is unmounted (removed from the screen).&lt;/p&gt;

</description>
      <category>react</category>
      <category>useeffecthooks</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
