Skip to content
Sandny Blog
  • Home
  • Java
  • JavaScript
  • AWS
  • Embedded
  • About
Multiple refs for an array of React Elements JavaScript

Using multiple refs for an array of React Elements

  • October 4, 2022October 4, 2022
  • by Coder Kai

There are instances where you need to map elements and have multiple refs for an array of React Elements handled from higher-order components. For that and any similar circumstances, you can use the following approach to address this.

What is useRef in React.js

According to the documentation from React.js

useRef returns a mutable ref object whose .current property is initialized to the passed argument (initialValue). The returned object will persist for the full lifetime of the component.

https://reactjs.org/docs/hooks-reference.html#useref

Basically, the useRef value has an attribute .current that can hold a mutable value.

const Form = () => {
  const [inputRef] = useRef(null);
  const onPressStart = () => {
    inputRef.current?.focus();
  };

  return (
    <>
      <button onClick={onPressStart}>Start Questionair</button>
      <input ref={inputRef} type="text" />
    </>
  );
}

In the above example, the value of inputRef.current is initialized to that of the <input> element reference. By pressing the button it will focus on the input element.

Multiple refs for an array of React Elements

If we want to do this for several items in an array we can do the following. The useRef the value will be initialized to an array of items and it will be updated using the useEffect hook.

const inputArray = [1, 2, 3, 4]; // array of data
const inputRefs = useState([]);

const onPressStart = (index) => {
  inputRefs[index].current?.focus();
};

return (
  <div>
    {inputArray.map((item, index) => (
      <div key={index}>
        <h3>Question No: {item}</h3>
        <button onClick={() => onPressStart(index)}>Start Questionair</button>
        <input ref={element => inputRef.current[index] = element} type="text" />
      </div>
    ))}
  </div>
);

In the above code, the array of elements is stored in current and once the onPress is pressed it will focus on the input element. The index value is passed to the onPressStart function to identify which element should be focused on when pressed on the button.

07. Immutable and Mutable Values in Javascript
How to read AWS credential profiles with Terraform
Coder Kai
A humble developer
array of items with useRef multiple useRefs useRef useRef hook

Related articles

Immutable and Mutable Values in Javascript
07. Immutable and Mutable Values…
wrapper objects in javascript
06. Wrapper objects in Javascript
globals undefined and null values in javascript
05 Global, null and undefined…
Javascript Booleans and Equality
04. Javascript Guide Booleans and…
How to add Chakra UI Animations
Chakra UI Animations
SSL Websocket using Nginx Proxy
SSL Websocket proxy with Nginx…
Change python version correctly
Python is not setting correct…
optimize React.js load time
How to optimize React.js app…
Multiple refs for an array of React Elements
How to use IntersectionObserver to…
Multiple refs for an array of React Elements
How to dismiss dropdowns when…
Javascript guide Strings
03. Javascript Guide – Strings
How to fetch data with useEffect
How to fetch data with…
add styles to stripe elements
How to add styles to…
Typescript
How to use Typescript with…
how to optimize react-native map view
How to optimize react-native map…
debounce with react hooks
Avoid multiple clicks using debounce…
Numbers inJavascript
02. Javascript Guide – Numbers
Introduction to Javascript
01. Javascript Guide – Introduction…
Nginx Load Balancer with docker…
Create React App Using npx

Categories

  • android 3
  • Apollo Client 1
  • AWS 8
    • AppSync 5
    • EC2 1
    • EKS 1
    • Route53 1
    • S3 1
  • AWS Amplify 1
  • Chakra UI 1
  • Docker 1
  • Embedded 1
  • EmberJS 1
  • FCM 1
  • Godaddy 1
  • GraphQL 3
  • ios 1
  • Jasper 1
  • Java 10
    • Java 11 1
    • Java 14 1
  • JavaEE 2
  • JavaScript 39
    • Express.js 4
    • Javascript Guide 7
    • Node.js 3
    • react-native 4
    • React.js 17
    • Typescript 1
  • Kubernetes 1
  • machine learning 1
  • Maven 2
  • OCaml 3
  • PostgreSQL 1
  • Python 2
  • react-native 4
  • ReactJS 3
  • sass 1
  • Server 6
  • spark 1
  • Terraform 2
  • Ubuntu 4
  • Uncategorized 1
  • webpack 2

Recent Comments

  • binance Registrera dig on Higher order component wrappers using React.js and reusable components.
  • kopya site buyhacklink.com on How to create Lambda function with Terraform
  • Pamela587 on Chakra UI Animations

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

Archives

  • October 2022 3
  • September 2022 7
  • May 2022 1
  • December 2021 1
  • August 2021 1
  • July 2021 6
  • June 2021 3
  • February 2021 1
  • July 2020 1
  • December 2019 5
  • November 2019 6
  • October 2019 3
  • August 2019 1
  • March 2019 1
  • February 2019 1
  • January 2019 2
  • December 2018 1
  • September 2018 2
  • August 2018 1
  • June 2018 1
  • February 2018 1
  • November 2017 2
  • October 2017 5
  • September 2017 1
  • June 2017 1
  • May 2017 10
Sandny Blog space
Theme by Colorlib Powered by WordPress