← Back to Blogs

React

Class component vs functional component

InnovationM Admin 09 Dec 2021 3 min read
Class component vs functional component

In React Native mainly two types of components Class Component & Functional Component. 

Class components are ECMAScript2015(ES6) that extend a base class from React called Component. It is used as a container component to handle state management.

Before introducing the concept of hooks in React 16.8 functional component is a plain javascript function but after hooks it maintains have state and lifecycle also.  

Class Component Vs Functional Component:-

Class Component:

  1. In the class component, the render method is used when the state of the component is changed.
  2. It is a Stateful component.
  3. It requires extending from React Component and creating render function which returns a React element.
  4. It is used the Complex lifecycle method.
  5. Required “this” keyword for referring to the object itself.
  6. Lifecycle of class components are:-

    (a) Mount: It includes methods that are called in the following order when an instance of a component is being created and inserted.

 (i)

static getDerivedStateFromProps(props, state) {

                     console.log(“GetDerivedStateFromProps”);

                     return null;

                     }                

 (ii)

componentDidMount() {

                        console.log(“ComponentDidMount”);

                       }

(b) Update: It includes an update that can be caused by changes to props or state. These methods are called in the following order when a component is re-rendered:

(i)     

getDerivedStateFromProps(props, state) {

                       console.log(“GetDerivedStateFromProps”);

                       return null;

                      }

(ii)

shouldComponentUpdate(nextProps, nextState) {

                         console.log(nextProps, nextState);

                         console.log(this.props, this.state);




                        return false;  

                        },

(iii)

getSnapshotBeforeUpdate(prevProps, prevState) {

                        console.log(“GetSnapshotBeforeUpdate”);

                        return null;

                       }

(iv)

componentDidUpdate(prevProps, prevState, snapshot) {

                           console.log(“ComponentDidUpdate”)

                          }

 

(c) Unmount: It includes a method is called when a component is removed.

(i)

componentWillUnmount(){

                              console.warn('componentWillUnmount call')

                            alert('User has been deleted');       

                            }.
  1. The basic syntax of class Component using state:-
import React, { Component } from 'react';

  import {View,Text,Button} from 'react-native';

   class Example extends React.Component {

   constructor(props) {

   super(props);

   this.state = {

     count: 0

     };

   }
render() {

   return (

     <View>

       <Text>count: {this.state.count} times</Text>

       <Button onClick={() => this.setState({ count: this.state.count + 1 })}>

         Click

       </Button>

     </View>

     );

    }

   }

Functional Component:

In Functional Component, render the UI based on props.

  1. It is used a stateless component.
  2. It is a javascript function that accepts props as an argument and returns a React Component.
  3. Easier or simpler lifecycle.
  4. Not Required “this” keyword for referring to object.
  5. Lifecycle of class components are:-

 (a) Mount: It includes when you want to perform an action each time renders and mount.      

(i) useEffect( ()=>{},[prop1, prop2])

                        (ii) useEffect( ()=> {},[]).

(b) Update: It includes when you want to perform an action on component update.

                     

  (i)  useEffect( ()=>{},[prop1, prop2])

                         (ii) custom hook used for previous state.  useGetSnapshotBeforeUpdate((prevProps, prevState) => {})

                         (iii)useEffect( ()=>{})

                         (iv) useMemo().

    (c) Unmount: It includes when you want to perform an action only on a component unmount.

                  (i) useEffect( ()=>{return()=>{//cleanup}},[])

7. Basic Syntax functional component using state:-

import React, { useState } from 'react';

import {View,Text} from 'react-native';

function Example() {

 

  const [count, setCount] = useState(0);




  return (

    <View>

      <Text>You clicked {count} times</Text>

      <Button onClick={() => setCount(count + 1)}>

        Click me

      </Button>

    </View>

  );

}
About the Author
InnovationM Admin

Contributor at InnovationM.

LinkedIn

We don't
predict
the future.
We build what
comes next.

Share your goals, challenges, or ideas, we'll help you turn them into scalable digital solutions.