Recognized by Clutch.co as a top-rated Mobile App Development Company.
folio3-mobile
US 408 365 4638
START YOUR PROJECT
  • Solutions
    • Apps Discovery Services
    • Team Augmentation
    • Enterprise
    • AR/VR
    • IoT
    • Wearables
    • Field Sales
    • On Demand Apps
  • Industries
    • Retail
    • Agriculture
    • Healthcare
    • Pharmaceutical & Life Sciences
    • Manufacturing
    • Automotive
    • Logistics
    • Education
  • Technologies
    • Native Mobile Apps
      • iOS
      • Android
    • Cross Platform Apps
      • React Native
      • Flutter
      • Ionic
      • Xamarin
      • NativeScript
      • Sencha
  • Portfolio
  • Blog
  • Contact Us
Menu
  • Solutions
    • Apps Discovery Services
    • Team Augmentation
    • Enterprise
    • AR/VR
    • IoT
    • Wearables
    • Field Sales
    • On Demand Apps
  • Industries
    • Retail
    • Agriculture
    • Healthcare
    • Pharmaceutical & Life Sciences
    • Manufacturing
    • Automotive
    • Logistics
    • Education
  • Technologies
    • Native Mobile Apps
      • iOS
      • Android
    • Cross Platform Apps
      • React Native
      • Flutter
      • Ionic
      • Xamarin
      • NativeScript
      • Sencha
  • Portfolio
  • Blog
  • Contact Us

How to use useRef hook efficiently? – React

Published by: Fahad Latif | October 5, 2022 msaqlain
SCROLL AND BE AMAZED!
Home > Blog > How to use useRef hook efficiently? – React

With the release of 16.8 in React, a new hook has been introduced named ‘useRef’. The useRef hook allows the developer to create a direct reference to the DOM element. With refs, React allows you to create React element references. This hook was meant to be used in functional components but can be used in class-based components with React.createRef() method. The useRef can be used by calling React.useRef() method and attaching a React element to it using the ref attribute on the element. This function returns a mutable reference object.

Code snippet:

const refContainer = React.useRef(initialValue);

The initialValue argument defines the initial value of the reference object. This initial value could be used as the current value in the React element. The returned object has a property named ‘current’ which can be used to perform multiple operations with that element. This current property can be initialized to the passed argument initialValue e.g. useRef(initialValue). The useRef() only returns one item at a time which is the current object. The refContainer object can persist the value for the lifetime of the react element.

Figure 1.0 Explaining the flow of useRef current object.

Example 1:

Let’s take an example to make a counter using React.useRef().

In the example above, a button is created to make a counter of 1 in the value of an element created using React.useRef() method. The initial value is set to 0 which will be incremented at the click of a button. Using the counter property of counterRef we can use the current value of the defined ref element.

Output:

Live Link: https://codesandbox.io/s/gallant-sun-e01lq8?file=/src/App.js

Example 2:

Let’s take another example and dig down how we can use useRef in the manipulation of Forms.

For the sake of example let’s take a simple login form having some input fields and a button to submit the form. The above example demonstrates how you can use useRef in the form element. With this, you can pass this reference to any child element using props and call its methods/properties in the child element’s implementation. i.e; you can submit the form in the child element. Note: to use useRef in the child component .current property will be called.

Output:

Live Link: https://codesandbox.io/s/nice-firefly-r4dxpd?file=/src/App.js

Furthermore, to use useRef in class-based components we have to call in its constructor and assign it to the class’s property using this keyword. For that, in the class component, you need to bind it with ‘this’. Following is the snippet to achieve that:

How things worked before useRef?

Before the release of the useRef method, useState & useReducer were used to achieve useRef’s functionalities. While useState and useReducer hooks are the React Hooks to use local state in React components, they can also come at the cost of being called too often making the component to rerender for each call made to the update functions.

The best thing about useRef:

It does not cause rerenders.

Conclusion:

Hopefully, this article gives you a good understanding of how powerful useRef can be. Refs are the best and most efficient to update the part of a component without re-rendering the whole component. That’s commodious for writing leaner code & getting better performance.


About Fahad Latif

Newsletter

Search

Archives

  • April 2023
  • March 2023
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • April 2022
  • March 2022
  • February 2022
  • October 2021
  • September 2021
  • May 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • May 2019

Recent Posts

  • Web UI Test Automation with Pytest-BDD
  • How to fix IOS compass calibration issues
  • Testing Android Applications With Perfect Coverage
  • How to use useRef hook efficiently? – React
  • Introduction To Full Stack Quality Assurance

Tags

  • android
  • angular-state-management
  • Automation
  • Compass
  • cross-platform
  • css
  • development
  • firebase
  • hooks
  • ios
  • learn-ngrx
  • ngrx-beginner
  • ngrx/store
  • QA
  • react-native
  • reactjs
  • scss
  • stylesheet
  • styling
  • Testing
  • Test Script
  • UI-UX

Newsletter

Newsletter

Post navigation

Previous Introduction To Full Stack Quality Assurance
Next Testing Android Applications With Perfect Coverage
Schedule an appointment with our Mobile App Development Expert

    Footer Menu
    • Company
      • About Us
      • Portfolio
      • Blog
      • Careers
      • Contact Us
    • Solutions
      • Apps Discovery Services
      • Team Augmentation
      • Enterprise App Development
      • AR/VR Application Development
      • IoT Application Development
      • Wearables Apps Development
      • Field Sales
      • On-Demand Apps Development
    • Technologies
      • iOS
      • Android
      • React Native
      • Flutter
      • Ionic
      • Xamarin
      • NativeScript
      • HTML5
      • Sencha
    • Industries
      • Retail
      • Agriculture
      • Healthcare
      • Pharmaceutical
      • Manufacturing
      • Automotive
      • Logistics
      • Education

    US Office

    Belmont, California – 1301 Shoreway Road, Suite 160, Belmont, CA 94002

    Pleasanton, California – 6701 Koll Center Parkway, #250 Pleasanton, CA 94566

    Tel: +1 408 365 4638
    Support: +1 (408) 512 1812

    Mexico Office

    Amado Nervo #2200, Edificio Esfera 1 piso 4, Col. Jardines del Sol, CP. 45050, Zapopan, Jalisco, Mexico

    Bulgaria Office

    49 Bacho Kiro Street, Sofia, 1000, Bulgaria

    Canada Office​

    895 Don Mills Road, Two Morneau Shepell Centre, Suite 900, Toronto, Ontario, M3C 1W3, Canada

    UK Office

    Export House, Cawsey Way, Woking Surrey, GU21 6QX

    Tel: +44 (0) 14 8361 6611

    UAE Office

    Dubai, UAE – Dubai Internet City, 1st Floor, Building Number 12, Premises ED 29, Dubai, UAE

    Tel: +971-55-6540154
    Tel: +971-04-2505173

    Pakistan Office

    163 Bangalore Town, Main Shahrah-e-Faisal, Karachi –
    75350

    705, Business Center, PECHS Block-6, Shahrah-e-Faisal,
    Karachi – 75350

    First Floor, Blue Mall 8-R, MM Alam Road Gulberg III, Lahore

    Tel: +92-21-3432 3721-4 

    © 2021, Folio3 Software Inc., All rights reserved.

    • Privacy policy and terms of use
    • Cookie Policy
    Follow us on
    Facebook-f Twitter Linkedin-in

    Get a free app audit

      Tired of your app not performing up to the mark?

      Get a free technology and app strategy review.