<?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: Tyeb</title>
    <description>The latest articles on DEV Community by Tyeb (@tyeb11).</description>
    <link>https://dev.to/tyeb11</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F925769%2F638a05b0-ce5e-4a02-b1d4-5a74785ba883.jpeg</url>
      <title>DEV Community: Tyeb</title>
      <link>https://dev.to/tyeb11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tyeb11"/>
    <language>en</language>
    <item>
      <title>useEffect()</title>
      <dc:creator>Tyeb</dc:creator>
      <pubDate>Sun, 19 Mar 2023 12:08:01 +0000</pubDate>
      <link>https://dev.to/tyeb11/useeffect-3h8k</link>
      <guid>https://dev.to/tyeb11/useeffect-3h8k</guid>
      <description>&lt;p&gt;useEffect is a hook that manages side-effects in functional components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--53O-XhwD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7f9j416pvqxtos9dtxk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--53O-XhwD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7f9j416pvqxtos9dtxk.png" alt="Image description" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;A function will always produce the same output when given the same input; these functions are known as &lt;strong&gt;Pure functions&lt;/strong&gt;. This function produces a predictable output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AQedrwqb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v9ibbamj6ygznh7exhaj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AQedrwqb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v9ibbamj6ygznh7exhaj.png" alt="Image description" width="880" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side-effects&lt;/strong&gt; are the actions performed to communicate with the outside world. These actions are unpredictable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of Side-effects&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Making an API request.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;interacting with DOM.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;using localStorage or setTimeout or setInterval functions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ps7TZL6P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/guwwy1t4efb4uzrr9yk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ps7TZL6P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/guwwy1t4efb4uzrr9yk3.png" alt="Image description" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;useEffect&lt;/strong&gt; hook will take two arguments a callback function which will be called after a component render and a dependency array.this array tells react when to call this function.&lt;/p&gt;

&lt;p&gt;If no array is passed, useEffect will run at every render.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function MyComponent(){
 useEffect(()=&amp;gt;{
  console.log("Hello World");
 });
}

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

&lt;/div&gt;



&lt;p&gt;If an Empty array is passed, useEffect will run only at initial render.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function MyComponent(){
 useEffect(()=&amp;gt;{
  console.log("Hello World");
 },[]);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If array with a value inside is passed, useEffect will run whenever that value is changed between renders.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function MyComponent(){
 const [value,setValue]=useState(0);
 useEffect(()=&amp;gt;{
  console.log("Hello World");
 },[value]);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Comparing Class-based components with Functional-based components.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/tyeb_11/embed/poOZBXJ?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;we should avoid code duplication in componentDidMount and componentDidUpdate. So here we introduce useEffect hook in functional component.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/tyeb_11/embed/wvExZLb?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Cleanup function in useEffect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LlDsVzSo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttwldpohe4h3pvnacmtg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LlDsVzSo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttwldpohe4h3pvnacmtg.png" alt="Image description" width="880" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;lets say we are using a setInterval function that runs every second and this side-effect is not cleaned up. So whenever our component is unmounted or you moved to the next page this setInterval will still be running in background. This is bad and is known as memory leak.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Tvb7qtun--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l7cj9erufbscluikyect.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tvb7qtun--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l7cj9erufbscluikyect.png" alt="Image description" width="880" height="424"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;componentDidMount()&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;useEffect(()=&amp;gt;{
 console.log("component mount");
 },[])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;componentDidUpdate()&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;useEffect(()=&amp;gt;{
 console.log("component update");
 },[values])

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;componentWillUnmount()&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;useEffect(()=&amp;gt;{
 return ()=&amp;gt;console.log("component removed");
 },[])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9xc5SI0v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g41y27st9vle6418qtcs.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9xc5SI0v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g41y27st9vle6418qtcs.jpeg" alt="Image description" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>beginners</category>
    </item>
    <item>
      <title>useState()</title>
      <dc:creator>Tyeb</dc:creator>
      <pubDate>Fri, 17 Mar 2023 18:46:13 +0000</pubDate>
      <link>https://dev.to/tyeb11/usestate-1j0m</link>
      <guid>https://dev.to/tyeb11/usestate-1j0m</guid>
      <description>&lt;p&gt;With the help of useState hook we can have state variables in a functional component. It takes an initial value as an argument and returns an array with current state value and a function to update this value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rTAT143Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrcw3vfo7sk25r4u6q3c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rTAT143Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrcw3vfo7sk25r4u6q3c.png" alt="Image description" width="880" height="460"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Components&lt;/strong&gt;  are reusable pieces of code that return HTML elements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Props&lt;/strong&gt;  are the arguments passed into a component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State&lt;/strong&gt; is a value that belongs to a component.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;props are passed from component to component.&lt;/em&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;State in Class Component&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/tyeb_11/embed/wvExWKd?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;State in Functional Component&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/tyeb_11/embed/ExepyNJ?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updating state in nested object&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J9DI-vUi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g947g6frtk63e13dnkoo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J9DI-vUi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g947g6frtk63e13dnkoo.png" alt="Image description" width="880" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
