How to reference a DOM element in React
Find out how to ref a DOM element in React
React is great at abstracting away the DOM from you when building apps.
But what if you want to access the DOM element that a React component represents?
Maybe you have to add a library that interacts directly with the DOM like a chart library, maybe you need to call some DOM API, or add focus on an element.
Whatever the reason is, a good practice is making sure there’s no other way of doing so without accessing the DOM directly.
In the JSX of your component, you can assign the reference of the DOM element to a component property using this attribute:
ref={el => this.someProperty = el}
Put this into context, for example with a button element:
<button ref={el => (this.button = el)} />
button refers to a property of the component, which can then be used by the component’s lifecycle methods (or other methods) to interact with the DOM:
class SomeComponent extends Component {
render() {
return <button ref={el => (this.button = el)} />
}
}
In a function component the mechanism is the same, you just avoid using this (since it does not point to the component instance) and use a property instead:
function SomeComponent() {
let button
return <button ref={el => (button = el)} />
} download all my books for free
- javascript handbook
- typescript handbook
- css handbook
- node.js handbook
- astro handbook
- html handbook
- next.js pages router handbook
- alpine.js handbook
- htmx handbook
- react handbook
- sql handbook
- git cheat sheet
- laravel handbook
- express handbook
- swift handbook
- go handbook
- php handbook
- python handbook
- cli handbook
- c handbook
subscribe to my newsletter to get them
Terms: by subscribing to the newsletter you agree the following terms and conditions and privacy policy. The aim of the newsletter is to keep you up to date about new tutorials, new book releases or courses organized by Flavio. If you wish to unsubscribe from the newsletter, you can click the unsubscribe link that's present at the bottom of each email, anytime. I will not communicate/spread/publish or otherwise give away your address. Your email address is the only personal information collected, and it's only collected for the primary purpose of keeping you informed through the newsletter. It's stored in a secure server based in the EU. You can contact Flavio by emailing [email protected]. These terms and conditions are governed by the laws in force in Italy and you unconditionally submit to the jurisdiction of the courts of Italy.