Sélectionnez les éléments DOM dans React

Irakli Tchigladze 18 avril 2022
Sélectionnez les éléments DOM dans React

À un moment ou à un autre, chaque développeur JavaScript a utilisé la méthode getElementById(). Il prend un argument id et renvoie un élément HTML avec cet ID. Cette méthode est extrêmement utile pour effectuer des mutations DOM manuelles.

Saisir un nœud d’élément HTML est une nécessité courante. De nombreux développeurs expérimentés en JavaScript, mais novices dans le framework React, souhaitent savoir comment effectuer cette opération dans React.

Réfs dans React

Les références, abréviation de références, sont un moyen facile d’accéder au DOM dans React. Afin de lier l’élément (ou le composant) à une référence, l’élément doit avoir un attribut ref égal à votre ref. Un exemple d’élément <div> peut être lié à testRef de cette façon : <div ref={this.testRef}></div>. C’est une bonne pratique de stocker les instances ref dans une variable.

dans les composants fonctionnels

Depuis l’introduction des crochets il y a environ deux ans, les composants fonctionnels sont devenus beaucoup plus robustes. Si vous utilisez une version moderne de React (par exemple, 16.8.0), vous pouvez importer le hook useRef(), qui peut être utilisé pour définir une référence. Voici un exemple de composant fonctionnel qui référence une variable aléatoire pendant le rendu :

function App() {
    const elementVariable = useRef(null)
    useEffect(() => console.log(elementVariable), [] )
    return (
        <div ref={elementVariable}>
           <h1></h1> 
        </div>
    )
}

Dans cet exemple, en définissant elementVariable égal à l’instance du crochet useRef(), nous stockons le nœud HTML dans la variable.

Hook ne fonctionnera que si l’élément HTML a un attribut ref défini sur le nom de la variable.

Un argument passé au hook useRef() spécifie la valeur initiale de l’instance ref. Une fois l’élément <div></div> monté, la variable contiendra la valeur du nœud HTML. Voici à quoi ressemblera la console :

dans les composants de classe

Pendant longtemps, l’utilisation de composants de classe était le moyen par défaut de créer des composants React interactifs.

Depuis la sortie de la version 16.3, les développeurs React peuvent utiliser React.createRef() pour créer une référence. L’API peut être différente, mais les hooks React.createRef() et useRef() créent essentiellement les mêmes instances de référence.

Dans les composants de classe, l’instance ref est stockée dans une propriété de classe. Voici un exemple :

class App extends Component {
  constructor(props){
    super(props)
    this.ref = React.createRef()
  }
  componentDidMount(){
    console.log(this.ref);
  }
  render() {
    return <h1 ref={this.ref}>Referenced Text</h1>;
  }
}

Si vous regardez la console, vous verrez un objet avec la propriété current qui contient le nœud HTML.

Les développeurs utilisant la version React > 16.3 doivent utiliser une syntaxe légèrement différente pour créer des références. Exemple:

<div ref={(element) => this.ref = element}></div>

La référence créée de cette manière est appelée un rappel ref car nous définissons l’attribut ref sur une fonction de rappel qui prend l’élément HTML comme argument et attribue cette valeur à la propriété ref de l’instance de classe.

Irakli Tchigladze avatar Irakli Tchigladze avatar

Irakli is a writer who loves computers and helping people solve their technical problems. He lives in Georgia and enjoys spending time with animals.

LinkedIn