Open In App

Which is preferred option with in callback refs and findDOMNode() in ReactJS ?

ReactJS employs two prominent concepts, namely callback refs and `findDOMNode()`, for effective DOM manipulation. These mechanisms facilitate access to DOM elements, enabling the implementation of diverse changes such as hiding or showing elements, altering styles, and focusing on specific elements.

Table of Content



Prerequisites:

Steps to Create React Application And Installing Module:

Step 1: Create a react application using this command:

npx create-react-app gfg-project

Step 2: After creating your project folder i.e. gfg-project, move to it using this command:



cd gfg-project

Project Structure:

Project Structure

The updated dependencies in package.json file will look like:

"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4",
}

findDOMNode():

findDOMNode() was very popular for returning the DOM of any element in the class-based component. But after React v16.3 it was discouraged but till now it is used for certain use cases. But there is a chance that it might get removed from the future version of React.

If the component renders a null value then, in that case, it returns a null value and if the component will render a string value then, in that case, it will return that value.

Syntax:

ReactDOM.findDOMNode(Instance of the component);

Steps to use findDOMNode():

Example:




import React from "react";
import ReactDOM from "react-dom";
 
class Gfg extends React.Component {
    manDOM = () => {
        var ele = document.getElementById("mydiv");
        var a = ReactDOM.findDOMNode(ele);
        a.style.backgroundColor = "yellow";
    };
    render() {
        return (
            <>
                <h1 className="gfg">GeeksforGeeks</h1>
                <h3 className="gfgdom">findDOMNode() in React</h3>
                <div id="mydiv">Testing</div>
                <button onClick={this.manDOM}>Change</button>
            </>
        );
    }
}
export default Gfg;

Steps to Run the application: After that run your application using the following command:

npm start

Output:

Output

Callback refs:

Callback refs stand out as a crucial concept in ReactJS for DOM manipulation. When manipulating the DOM using refs, we pass a ref, created with “React.createRef” in class components and “useRef” in functional components, directly to the element to gain access to it.

Steps to use Callback ref:

Example:




import React from "react";
 
class Gfg extends React.Component {
    constructor() {
        super();
        this.inRef = null;
    }
 
    setCallbackRef = (node) => {
        this.inRef = node;
    };
 
    manDOM = () => {
        this.inRef.style.backgroundColor = "yellow";
    };
    render() {
        return (
            <>
                <h1 className="gfg">GeeksforGeeks</h1>
                <h3 className="gfgdom">callback ref in React</h3>
                <div ref={this.setCallbackRef}>Testing</div>
                <button onClick={this.manDOM}>Change</button>
            </>
        );
    }
}
export default Gfg;

Steps to Run the application: After that run your application using the following command:

npm start

Output:

Output

Reason behind the preference of callback refs over findDOMNode():


Article Tags :