<?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>Forem: Israt Zahan Sathi</title>
    <description>The latest articles on Forem by Israt Zahan Sathi (@ijsathi).</description>
    <link>https://forem.com/ijsathi</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%2F780677%2F24061dbd-575a-4bd4-a6f2-eb5237f1a764.jpeg</url>
      <title>Forem: Israt Zahan Sathi</title>
      <link>https://forem.com/ijsathi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ijsathi"/>
    <language>en</language>
    <item>
      <title>5 Things Every Beginner Should Know Before Starting Manual Testing</title>
      <dc:creator>Israt Zahan Sathi</dc:creator>
      <pubDate>Sun, 01 Feb 2026 15:15:14 +0000</pubDate>
      <link>https://forem.com/ijsathi/5-things-every-beginner-should-know-before-starting-manual-testing-108p</link>
      <guid>https://forem.com/ijsathi/5-things-every-beginner-should-know-before-starting-manual-testing-108p</guid>
      <description>&lt;p&gt;Hello DEV Community 👋&lt;/p&gt;

&lt;p&gt;This is my first post here after a long time, and I’m really excited to start sharing my learning journey.&lt;/p&gt;

&lt;p&gt;Currently, I’m working on building my skills in &lt;strong&gt;Software Quality Assurance (SQA)&lt;/strong&gt;, especially focusing on &lt;strong&gt;Manual Testing&lt;/strong&gt;.&lt;br&gt;
As a beginner, I realized that manual testing is not just about clicking buttons — it’s about thinking like a user, understanding requirements, and ensuring software quality.&lt;/p&gt;

&lt;p&gt;So today, I want to share &lt;strong&gt;5 important things every beginner should know before starting manual testing&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.amazonaws.com%2Fuploads%2Farticles%2Fwh0gdk2vbkevbz3b5yxp.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.amazonaws.com%2Fuploads%2Farticles%2Fwh0gdk2vbkevbz3b5yxp.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅1. Manual Testing Is More Than “Just Checking”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many people think manual testing is only about trying the app and finding bugs.&lt;/p&gt;

&lt;p&gt;But actually, manual testing is about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding the feature&lt;/li&gt;
&lt;li&gt;Validating user experience&lt;/li&gt;
&lt;li&gt;Ensuring the product meets requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A tester’s job is to make sure the software works correctly in real-life scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅2. Requirements Are Your Best Friend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before testing anything, always ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is the expected behavior?&lt;/li&gt;
&lt;li&gt;What problem is this feature solving?&lt;/li&gt;
&lt;li&gt;What are the acceptance criteria?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even simple testing becomes much easier when you clearly understand the requirement.&lt;/p&gt;

&lt;p&gt;📌 Good testing always starts with good understanding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅3. Always Think in Positive and Negative Scenarios&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beginner testers often test only the “happy path.”&lt;br&gt;
But real users don’t always behave perfectly.&lt;/p&gt;

&lt;p&gt;Example for a login page:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Positive Test: Login with correct credentials&lt;/li&gt;
&lt;li&gt;❌ Negative Test: Login with wrong password&lt;/li&gt;
&lt;li&gt;❌ Negative Test: Leave fields empty&lt;/li&gt;
&lt;li&gt;❌ Negative Test: Enter invalid phone number&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Testing both scenarios helps find real issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅4. Test Cases Help You Stay Organized&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Writing test cases is one of the best habits for QA engineers.&lt;/p&gt;

&lt;p&gt;A simple test case includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test Steps&lt;/li&gt;
&lt;li&gt;Expected Result&lt;/li&gt;
&lt;li&gt;Actual Result&lt;/li&gt;
&lt;li&gt;Status (Pass/Fail)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even if you are new, test cases help you test systematically and avoid missing important checks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅5. Bug Reporting Is a Skill (Not Just a Message)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finding a bug is not enough — reporting it properly is equally important.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A good bug report should include:&lt;/li&gt;
&lt;li&gt;Clear bug title&lt;/li&gt;
&lt;li&gt;Steps to reproduce&lt;/li&gt;
&lt;li&gt;Expected vs Actual result&lt;/li&gt;
&lt;li&gt;Screenshot or video evidence&lt;/li&gt;
&lt;li&gt;Severity/Priority (if applicable)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A well-written bug report saves developers a lot of time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🌱 Final Thoughts&lt;/strong&gt;&lt;br&gt;
As a beginner in SQA, I’m learning that manual testing builds the foundation of quality assurance.&lt;/p&gt;

&lt;p&gt;It improves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Attention to detail&lt;/li&gt;
&lt;li&gt;Analytical thinking&lt;/li&gt;
&lt;li&gt;Communication&lt;/li&gt;
&lt;li&gt;Product understanding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll keep sharing more beginner-friendly QA topics as I continue learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💬 Let’s Connect!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re also learning QA or working in software testing, feel free to share your thoughts:&lt;/p&gt;

&lt;p&gt;👉 What was the first thing you learned in manual testing?&lt;/p&gt;

&lt;p&gt;Thanks for reading! 😊&lt;/p&gt;

</description>
      <category>sqa</category>
      <category>manualtesting</category>
      <category>testing</category>
      <category>softwaretesting</category>
    </item>
    <item>
      <title>Find Duplicate in an Array in C++</title>
      <dc:creator>Israt Zahan Sathi</dc:creator>
      <pubDate>Mon, 15 Jan 2024 06:48:32 +0000</pubDate>
      <link>https://forem.com/ijsathi/find-duplicate-in-an-array-in-c-3elg</link>
      <guid>https://forem.com/ijsathi/find-duplicate-in-an-array-in-c-3elg</guid>
      <description>&lt;p&gt;&lt;strong&gt;Problem 1&lt;/strong&gt;&lt;br&gt;
You will be given an array &lt;em&gt;arr&lt;/em&gt; of size &lt;em&gt;n&lt;/em&gt;. Print "YES" if there is any duplicate value in the array, "NO" otherwise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Sample Input 1&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
5&lt;br&gt;
2 8 5 7 3&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Sample Output 1&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;NO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Sample Input 2&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
7&lt;br&gt;
2 1 3 5 2 1 9&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Sample Output 2&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;YES&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Input Format&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First line will contain &lt;em&gt;n&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Second line will contain the array &lt;em&gt;arr&lt;/em&gt;.
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexbgpw4nk4iismj9rzu4.JPG" alt="Image description"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow the steps to resolve the problem:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Assuming we get an input.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Now declare &lt;em&gt;n&lt;/em&gt; and input its value.&lt;/li&gt;
&lt;li&gt;Declare an array name is &lt;em&gt;arr&lt;/em&gt;, and take that as input.&lt;/li&gt;
&lt;li&gt;Take a &lt;em&gt;tmp _to check if there are duplicate values in the array.[_tmp _is a variable used as a flag to indicate whether there are duplicate elements in the array. The name "_tmp&lt;/em&gt;" is often used as a shorthand for "temporary" or "temporary variable." Its purpose is to store a temporary state or result during the execution of the program.]&lt;/li&gt;
&lt;li&gt;Then loop through and look for duplicates. If duplicate value is found then I will set &lt;em&gt;"tmp = 1"&lt;/em&gt; and also break the loop.&lt;/li&gt;
&lt;li&gt;After that I will check, if duplicate value is found I will print &lt;em&gt;"&lt;strong&gt;YES&lt;/strong&gt;"&lt;/em&gt;, if not found I will print &lt;em&gt;"&lt;strong&gt;NO&lt;/strong&gt;"&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Below is the implementation of the above method:&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;#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
int main()
{
    int n;
    cin &amp;gt;&amp;gt; n;
    int arr[n];
    for (int i = 0; i &amp;lt; n; i++)
        cin &amp;gt;&amp;gt; arr[i];
    int tmp = 0;
    for (int i = 0; i &amp;lt; n; i++)
    {
        for (int j = i + 1; j &amp;lt; n; j++)
        {
            if (arr[i] == arr[j])
            {
                tmp = 1;
                break;
            }
        }
    }
    if (tmp)
        cout &amp;lt;&amp;lt; "YES" &amp;lt;&amp;lt; endl;
    else
        cout &amp;lt;&amp;lt; "NO" &amp;lt;&amp;lt; endl;
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>cpp</category>
      <category>array</category>
      <category>duplicate</category>
      <category>programming</category>
    </item>
    <item>
      <title>Basic CRUD Operations</title>
      <dc:creator>Israt Zahan Sathi</dc:creator>
      <pubDate>Mon, 27 Dec 2021 17:59:58 +0000</pubDate>
      <link>https://forem.com/ijsathi/basic-crud-operations-hg0</link>
      <guid>https://forem.com/ijsathi/basic-crud-operations-hg0</guid>
      <description>&lt;p&gt;&lt;strong&gt;CRUD Operations&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;CRUD&lt;/strong&gt; is an acronym for Create, Read, Update, and Delete. These are the four basic functions that can be performed with most traditional database systems and they are the backbone for interacting with any database.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzg9i3u89pb3eebmkdfi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzg9i3u89pb3eebmkdfi.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Pic collected&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;HTML Verb: POST , CRUD: Create -&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
The POST function often uses the new resource "create". In particular, it is used to create subordinate resources. That is, no one else is subject to such parental assets. In other words, when creating a new resource, POST the parent and the service takes care of adding new resources to the parent, assigning an ID (new resource URI), etc.&lt;br&gt;
If created successfully, return HTTP status 201, 201 Return a location header with a link to the newly created resource with HTTP status.&lt;br&gt;
Posts are not secure or indomitable. Therefore it is recommended to request non-indomitable resources. Requesting two identical POSTs will probably result in two resources containing the same information.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/api/service /*{create a service if id not exists ,update otherwise}*/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;HTML Verb: GET, CRUD: Read-&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
The HTTP GET method is used to "read" or retrieve an asset presentation. In the "happy" or non-error path, GET provides a presentation in XML or JSON and an HTTP response code of 200 (OK). In case of an error, it often returns a 404 (not found) or 400 (bad request).&lt;br&gt;
According to the design of the HTTP specification, GET (including HEAD) requests are used to read data only and do not change it. Therefore, when used in this way, they are considered safe. That is, they can be called without the risk of data alteration or corruption. Calling it once has the same effect as calling 10 times, or not at all. Additionally, GET (and HEAD) is idempotent, meaning that multiple identical requests yield the same results as a single request.&lt;br&gt;
Do not publish unsafe activities through GET — it should never change any resources on the server.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/api/service /*{returns a single page of service}*/&lt;br&gt;
/api/service/{id} /*{returns a single service as defined by the id provided}*/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;HTML Verb: PUT, CRUD: Update-&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
PUT is often used for "update" capability, PUT-in a familiar resource URI containing a newly-updated representation of the original resource with the request body.&lt;br&gt;
However, PUT can also be used to create a resource where the resource ID is chosen by the client instead of the server. In other words, if the PUT is in a URI that contains the value of a non-existent resource ID. Again, there is a resource presentation in the request section. Many find it complicated and confusing. As a result, this method of creation should be used sparingly, if at all.&lt;br&gt;
Alternatively, use POST to create a new resource and provide the client-defined ID in the body representation - in a URI that does not include the resource ID.&lt;br&gt;
Upon successful update, return 200 from PUT or 204 if no content is returned to the body. When using PUT to create, return HTTP status 201 on successful creation. A body of feedback is optional and uses one more bandwidth. There is no need to return a link with a location title in case of creation as the client has already set the resource ID.&lt;br&gt;
PUT is not a secure operation, it modifies or creates the status on the server, but it is invincible. In other words, if you create or update a resource using PUT and then make the same call again, the resource is still there and still in the same condition as it did with the first call.&lt;br&gt;
For example, if a PUT call on an asset increases one counter of the asset, the call is no longer invincible. Sometimes this happens and it may be enough to document that the call is not indomitable. However, it is advisable to keep PUT requests in abeyance. It is strongly recommended to use POST for non-refractory requests.&lt;br&gt;
&lt;code&gt;/api/service /*{create a service if id not exists , update otherwise}*/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;HTML Verb: DELETE, CRUD: Delete-&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
DELETE is quite easy to understand. It is used to "delete" a resource identified by a URI.&lt;br&gt;
If successfully deleted, return HTTP status 200 (OK) with a response body, perhaps a presentation of the deleted item (often demanding too much bandwidth), or a wrapping response (see return value below). Either that or return HTTP status 204 (no content) without a response body. In other words, a 204 status without any body, or JSEND-style response and HTTP status 200 is the recommended response.&lt;br&gt;
HTTP-Spec-Wise, Delete operations are indomitable. When you delete an asset, it is removed. Repeated DELETE calls to that resource have the same consequences: the resource is gone. Calling DELETE means reducing a counter (within resources), the DELETE call is no longer invincible. As mentioned earlier, usage statistics and measurements may be updated while still considering the service incomplete unless any resource data is changed. It is recommended to use POST for non-exhaustive resource requests.&lt;br&gt;
However, there is a warning about DELETE disability. A second call to the resource DELETE will often return a 404 (not found) since it has already been removed and is therefore no longer found. This, in some respects, makes DELETE operations more incapacitated, however, the end state of the asset remains the same. A 404 return is acceptable and communicates the status of the call correctly.&lt;br&gt;
&lt;code&gt;/api/service/{id} /*{delete a single service as defined by the id provided}*/&lt;/code&gt;&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>react</category>
    </item>
    <item>
      <title>Simple Basic JSX, Component Lifecycle, Hooks</title>
      <dc:creator>Israt Zahan Sathi</dc:creator>
      <pubDate>Sun, 26 Dec 2021 16:11:23 +0000</pubDate>
      <link>https://forem.com/ijsathi/simple-basic-jsx-component-lifecycle-hooks-3b1d</link>
      <guid>https://forem.com/ijsathi/simple-basic-jsx-component-lifecycle-hooks-3b1d</guid>
      <description>&lt;p&gt;&lt;strong&gt;JSX:&lt;/strong&gt;&lt;br&gt;
JSX is a JavaScript syntax extension and sometimes known as JavaScript XML. It is a responsive extension of syntax in JavaScript language that provides a way to construct content rendering using syntax known to many developers. It looks like HTML.&lt;br&gt;
example:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n0CzJ-QG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cpnh3sayswmzrzdnxg19.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n0CzJ-QG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cpnh3sayswmzrzdnxg19.png" alt="Image description" width="359" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or,&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ctv2e-He--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yywoyy88okbrwhe35fpz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ctv2e-He--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yywoyy88okbrwhe35fpz.png" alt="Image description" width="510" height="37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component Lifecycle:&lt;/strong&gt;&lt;br&gt;
The component is created i.e. mounted in DOM, updated and enlarged and then die or unmounted in DOM. This is referred to as a material life cycle. There are different life cycle methods that respond to different stages of life of an element.&lt;br&gt;
Lifecycle Methods:&lt;br&gt;
Initialization&lt;br&gt;
This is the stage where the element sets its state and props and starts its journey. This is usually done inside the constructor method.&lt;br&gt;
example:&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Mounting:&lt;/strong&gt;&lt;br&gt;
The name is self-explanatory. Mounting is the phase where our reactive component is mounted on the DOM, i.e. created and inserted into the DOM.&lt;br&gt;
This episode comes to the scene after the initial phase is over. At this stage, our material renders for the first time. The methods available at this stage are:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;componentWillMount()&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This method is called just before mounting an element in the DOM or is called the render method. After this procedure, the component is mounted.&lt;br&gt;
NB: You will not make API calls or change any data using this.setstate in this manner as it is called before the render method. So, nothing can be done with the DOM (such as updating data with API feedback) because it is not mounted. Therefore, we cannot update the state with API feedback.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;componentDidMount()&lt;/em&gt;&lt;br&gt;
This method is called after mounting the component in the DOM. Like component Willmount, it is called once in a life cycle. Before this method is implemented, the render method is called, that is, we can access the DOM. We can make API calls and update states with API responses.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--06bO5w6G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2mcwazh3sunok1eyv0wu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--06bO5w6G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2mcwazh3sunok1eyv0wu.png" alt="Image description" width="548" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;updating:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the third stage through which our material passes. After the mounting episode where the component was created, the update episode comes into view. This is where the state of the component changes and, therefore, the rendering takes place.&lt;br&gt;
At this stage, the component's data (state and props) are updated to respond to user events such as clicking, typing, etc. This results in re-rendering of the component.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Unmounting:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the last stage of the material life cycle. As the name implies, at this stage the component is unmounted from the DOM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hooks:&lt;/strong&gt;&lt;br&gt;
Hook is a new feature introduced in React 16.8 version. This allows you to use the status and other feedback features without typing the class. A hook is a function that "hooks in" the reaction state and lifecycle properties from the function element. It doesn't work inside the classroom.&lt;br&gt;
The hooks are backwards-compatible, which means there is no broken change. Also, it does not replace your knowledge of the concept of reaction.&lt;br&gt;
When to use a Hooks:&lt;br&gt;
If you write a function element, and then you want to add some state to it, first you do it by converting it into a class. But, now you can do this by using a hook inside the existing function element.&lt;/p&gt;

&lt;p&gt;example:&lt;/p&gt;

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

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
