Mastering React Hook useRef: A TypeScript Guide

March 5, 2024Author: Fabio J Raminhuk

Are you looking to level up your React skills with TypeScript? Dive into the world of React Hook useRef for seamless state management and DOM manipulation! In this comprehensive guide, we'll walk through everything you need to know about using useRef effectively in your TypeScript-powered React applications.


Understanding React Hook useRef

First things first, let's understand what useRef is all about. useRef is a React Hook that provides a way to hold mutable values that persist across renders without causing re-renders. It's particularly useful for accessing and manipulating DOM elements, managing timers, and storing mutable variables.


How to Use useRef in TypeScript

Now, let's jump into some TypeScript code examples to see how useRef can be used in various scenarios:

import React, { useRef } from 'react';

const MyComponent: React.FC = () => {
  // Create a ref to hold the input element
  const inputRef = useRef<HTMLInputElement>(null);

  const focusInput = () => {
    // Access the current value of the ref

  return (
      {/* Attach the ref to the input element */}
      <input ref={inputRef} type="text" />
      <button onClick={focusInput}>Focus Input</button>

export default MyComponent;

In this example, we're creating a ref to hold a reference to the input element. We then use useRef to attach this ref to the input element, allowing us to access and manipulate it later.


Advanced Techniques with useRef

Beyond simple DOM manipulation, useRef can be used for various advanced techniques, such as managing focus, accessing previous values, and more. Let's explore another example:

import React, { useRef, useEffect } from 'react';

const MyComponent: React.FC = () => {
  const prevValueRef = useRef<string>('');

  useEffect(() => {
    // Store the current value for comparison in the next render
    prevValueRef.current = 'New Value';

  return <div>Previous Value: {prevValueRef.current}</div>;

export default MyComponent;

In this example, we're using useRef to store the previous value of a variable across renders using useEffect. This pattern is particularly useful for comparing values between renders.


Best Practices and Tips

  • Avoid Overusing useRef: While useRef is powerful, it's important not to overuse it. Reserve it for cases where mutable values need to persist across renders.
  • Use useRef for DOM Manipulation: When dealing with direct DOM manipulation, useRef is your friend. It allows you to access and modify DOM elements without causing unnecessary re-renders.
  • Leverage useRef for Storing Previous Values: useRef can be handy for storing previous values and performing comparisons between renders, as demonstrated in the examples above.


Congratulations! You've now mastered the essentials of React Hook useRef in TypeScript. Armed with this knowledge, you can enhance your React applications with efficient state management and DOM manipulation. Experiment with useRef in your projects and explore its full potential to elevate your React development skills!