DO YOU NEED A CONTENT WRITER FOR YOUR BUSINESS?

Your One-Stop Solution for All Content Needs! Click here for more!
Technology

Reconciliation in React JS: The Ultimate Guide

Share

The Reconciliation in React JS is the process by which React updates the browser DOM pertaining to some fundamental principles. You may conceive the render () method in React constructing a tree of React elements at some point. On the next state or prop update, this render () method delivers another tree of React elements.Next, React would learn how to efficiently update the UI to reflect the most recent tree.

You may also check our essential guide on React fundamentals: Props and State to better understand the purpose of prop and state.

There are typical solutions to this algorithm’s challenge of generating the fewest number of operations to change one tree into another. Prior art methods, on the other hand, had a complexity on the order of O(n3), where n is the number of tree components.

If you use this in React, you’ll need a billion comparisons to see 1000 elements, which is too expensive. Instead, React implements an O(n) heuristic algorithm based on two assumptions:

  1. Two different elements will create two different trees.
  2. The developer can define at which child elements may be stable across different renders with a “key” prop.

Let’s understand both one by one.

Reconciliation in React Different Trees:

When distinguishing between two trees, react first compares the two root elements. The behavior differs depending on the type of root element. There are different types of Elements for Reconciliation in React.

Whenever the root elements have different types, the reaction destroys the old tree and builds a new tree from scratch. Going with any of these will result in a full rebuild.

Let’s understand this concept with practice.

Case 1: When the child is different from the previous one.

Here, I am going to create a div and p tag using the setInterval function based on the label state which will be going to true and false.

importReact, { Component } from’react’

importCounterfrom’./Counter’

classReconciliationextendsComponent {

    constructor(props) {

        super(props)

        this.state = {

            label:true

        }

    }

    componentDidMount() {

        setInterval(()=>{this.setState({ label: !this.state.label })}, 2000)

    }

    render() {

        return (

            <div>

                {

                    this.state.label ? <ptitle={`${this.state.label}`}>Hello, p tag.</p>

                        : <divtitle={`${this.state.label}`}>

                            Hello, div tag

                        </div>

                }

            </div>

        )

    }

}

exportdefaultReconciliation;

Here, when the label will be true then the p tag will display, and itcreates a new instance. The below video will clarify the concept.

Figure 1. Updating the Parent Element

In reconciliation, first, it checks the root element if the root element is the same then it will go for the child element. If the child element is different from the previous one, then it will create a whole new instance of Dom. In the above video, you can see that inside the root element there is a div tag which is work as the parent element. Now when the p tag is displayed inside the div at that time dom will check the previous child element which is a div tag, so both are different. So, it will produce a new element.

Case 2: When the child is same from the previous one.

importReact, { Component } from’react’

importCounterfrom’./Counter’

classReconciliationextendsComponent {

    constructor(props) {

        super(props)

        this.state = {

            label:true

        }

    }

    componentDidMount() {

        setInterval(() => { this.setState({ label: !this.state.label }) }, 2000)

    }

    render() {

        return (

            <div>

                {

                    this.state.label ? <ptitle={`${this.state.label}`}>Hello, p tag.</p>

                        : <ptitle={`${this.state.label}`}>

                            Hello, div tag

                        </p>

                }

            </div>

        )

    }

}

exportdefaultReconciliation;

Whenthere is the same child as the previous one then it will check for the attribute of elements.Below, the video will clarify more.

Figure 2. The child element is the same

In the video, you can see that when the parent element is the same and the child element is the same then it goes for checking the attribute of the element. The div after the root element is the same in both cases only the text and title areupdated. Here, it will not create a whole new instance just because of the title.

Key:

The key concept is more powerfulwhen we are talking about creating a new element.React use the Key attribute to identify whether any element has changed, which element has been added, and which element was deleted.Let’s understand by example.

importReact, { Component } from’react’

classReconciliationextendsComponent {

    constructor(props) {

        super(props)

        this.state = {

            items: [

                { name:’abc’ },

                { name:’pqr’ },

                { name:’xyz’ }

            ]

        }

    }

    addNewItem() {

        this.setState({ items: [{ name:”mno” }, …this.state.items] })

    }

    render() {

        return (

            <div>

                <ul>

                    {this.state.items.map((item, index) => {

                        return<li>{item.name}</li>

                    })}

                </ul>

                <buttononClick={() =>this.addNewItem()}>Add</button>

            </div>

        )

    }

}

exportdefaultReconciliation;

When we don’t use the key andwant to add the element at the first at that time Dom will manipulate the entire list. You can see the below video.

To solve this problem, React Reconciliation supports key attributes. If a child has a key, react uses that key to match the children of the original tree with the children of the next tree. For example, you can make tree conversions more efficient by adding keys to the inefficient example above.

Figure 3. List without Key

You can see when we add the new element at the first it mutates the whole list just because they have no unique key. Now we will check using the key attribute.

importReact, { Component } from’react’

classReconciliationextendsComponent {

    constructor(props) {

        super(props)

        this.state = {

            items: [

                { name:’abc’, id:1 },

                { name:’pqr’, id:2 },

                { name:’xyz’, id:3 }

            ]

        }

    }

    addNewItem() {

        this.setState({ items: [{ name:”mno”, id:4 }, …this.state.items] })

    }

    render() {

        return (

            <div>

                <ul>

                    {this.state.items.map((item) => {

                        return<likey={item.id}>{item.name}</li>

                    })}

                </ul>

                <buttononClick={() =>this.addNewItem()}>Add</button>

            </div>

        )

    }

}

exportdefaultReconciliation;

Here, we are passing id as a key for each element. now it will not mutate all the list elements. It’s only addinga new element at first because now when comparing to the previous list it will find the same key element. see below video for more clarification.

Figure 4. List with Key

You can see when we add a new list with the key then it will not mutate the entire list, it justadds the element at the first position.

Conclusion

Reconciliation in React is a significant topic for React developers, which gives the idea that how the browser updates theirs React DOM element. It is the gateway for any business to acquire a customer and leads. Therefore, keeping a primary focus on user requirements is essential. Here, in this blog, we have learned about What is Reconciliation in React? the principal rules for reconciliation, and at the last, we created one project for understanding reconciliation.

1.DRDO Recruitment Apply Online
2.Croxyproxy Youtube Sharechat
3.Suddenlink Login
Namaste UI (Author)

Namaste UI collaborates closely with clients to develop tailored guest posting strategies that align with their unique goals and target audiences. Their commitment to delivering high-quality, niche-specific content ensures that each guest post not only meets but exceeds the expectations of both clients and the hosting platforms. Connect with us on social media for the latest updates on guest posting trends, outreach strategies, and digital marketing tips. For any types of guest posting services, contact us on info[at]namasteui.com.

Recent Posts

The Future of Cryptocurrency 100 Years From Now: Bold Predictions & Key Forces

Cryptocurrency has transformed from a digital experiment into a global financial force in just over…

11 hours ago

Silent Layoffs in Indian Tech Sector: Subtle Signs Employees Shouldn’t Ignore

Introduction Layoffs have always been a part of corporate life, but the way they’re happening…

2 days ago

Moving Made Mindful: Car Shipping Tips That Align With Your Lifestyle

Relocating is often an exciting milestone, whether you’re starting a new job, heading to college,…

3 days ago

Do Keyword-Focused Domains Have Relevance for Voice Search Today?

When you select cheap domain names, it can have a significant impact on the success…

5 days ago

VPS Hosting for Resource-Intensive Applications: What You Need to Know

Shared hosting struggles to keep up the performance commitment. Therefore, low-cost VPS hosting is an…

5 days ago

How Dermatologists Treat Melasma Without Over-Bleaching the Skin

Does your melasma return every summer despite months of treatment? Melasma appears as brown or…

6 days ago