Maison  >  Article  >  interface Web  >  Quelle est la différence entre les événements de réaction et les événements natifs ?

Quelle est la différence entre les événements de réaction et les événements natifs ?

WBOY
WBOYoriginal
2022-04-21 10:52:083979parcourir

La différence entre les événements React et les événements natifs est la suivante : les événements en réaction sont liés au document tandis que les événements natifs sont liés au dom ; En termes de liaison, les événements sur le DOM doivent être exécutés avant les événements sur le document. L'objet événement de React est un objet synthétique et non natif.

Quelle est la différence entre les événements de réaction et les événements natifs ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, React version 17.0.1, ordinateur Dell G3.

Quelle est la différence entre les événements React et les événements natifs ?

Les événements en réaction sont liés au document,

Et les événements natifs sont liés au dom,

Donc, par rapport au lieu de liaison, les événements dom sur le document doit être exécuté avant les événements sur le document

Que sont les événements ?

Tout d'abord, JS consiste à implémenter certaines opérations dynamiques, et les utilisateurs souhaitent parfois implémenter certaines fonctions, telles que la soumission de formulaires, les clics de souris, etc., ils doivent donc déclencher cet événement dans le navigateur, puis le navigateur le fera sens (ou s'il capture le comportement de l'utilisateur, il répondra et gérera l'événement. C'est ce qu'on appelle un événement.

Qu'est-ce qu'un objet événementiel ?

Lorsque le système appelle le gestionnaire, il encapsule toutes les informations sur l'événement dans un objet, puis les transmet en tant que paramètre au gestionnaire d'événement, et cet objet est l'objet événement. Dans les fonctions natives, vous voyez souvent un événement, et cette chose est ce que nous appelons l'objet événement.

react présente les avantages suivants dans le traitement des événements :

  • Presque tous les événements sont délégués au document pour atteindre l'objectif d'optimisation des performances

  • Pour chaque type d'événement, la fonction de distribution est uniformément utilisée (dispatchEven ) événement de répartition

  • L'objet événement (event) est un objet synthétique (syntheticEvent), pas un

Événement synthétique React

Pourquoi est-il abstrait en un événement synthétique ?

Si toutes les fonctions de gestion des événements sont liées au DOM, cela sera affecté lorsque la page répondra, ce qui rendra la page très lente. Afin d'éviter l'abus de tels événements DOM et de protéger les différences système entre les différents événements du navigateur au niveau de la couche inférieure, React implémente une couche intermédiaire - SyntheticEvent

Principe

Dans React, si vous devez lier un événement, vous faites habituellement cela. Il sera écrit comme ceci en JSX :

<div onClick={this.onClick}>我是react点击事件</div>

Mais en réaction, l'événement click n'est pas réellement lié au DOM du div, mais au DOCUMENT lorsque l'événement se produit et bouillonne, en atteignant le document. , React transmettra le contenu de l'événement à la fonction correspondante pour traitement

Comment utiliser les événements natifs dans React

Bien que React encapsule presque tous les événements natifs, tels que :

Modal est activé À l'avenir, lorsque vous cliquez sur d'autres zones vides, vous devez fermer Modal

Introduire certaines bibliothèques tierces implémentées avec des événements natifs, et lorsqu'il y a une interaction entre elles

, etc., vous devez utiliser des événements natifs pour le traitement de la logique métier.

Étant donné que les événements natifs doivent être liés au DOM réel, ils sont généralement liés pendant la phase d'exécution de la fonction composantdidmout/ref.

class Demo extends Domponent {
    componentDidMount () {
        const parentDom = ReactDom.findDOMNode(this)
        const childDom = parentDom.queneSelector(&#39;.button&#39;);
        childDom.addEventListen(&#39;click&#39;,this.onDomClick, false)
    }
    
    onDOMClick = (e) => {
        
    }
    render () {
        return <div>demo</div>
    }
}

Utilisation mixte d'événements natifs et d'événements synthétiques

Si vous devez mélanger des événements natifs et des événements synthétiques dans un scénario métier, vous devez faire attention aux points suivants lors de l'utilisation :

L'ordre des réponses

class Demo extends Domponent {
    componentDidMount () {
        const parentDom = ReactDom.findDOMNode(this)
        const childDom = parentDom.queneSelector(&#39;.button&#39;);
        childDom.addEventListen(&#39;click&#39;,this.onDomClick, false)
    }
    
    onDOMClick = (e) => {
        console.log(&#39;dom event!&#39;)
    }
    onReactClick = (e) => {
        console.log(&#39;react event!&#39;)
    }   
    render () {
        return <div onClick={this.onReactClick}>demo</div>
    }
}

Sortie du résultat :

dom event! react event!

Analyse des causes : Tout d'abord, nous savons que les événements natifs sont liés au DOM et que les événements synthétiques sont liés au document. Par conséquent, les événements sur le DOM sont d'abord diffusés, puis exécutés en premier, et. puis Bouillonnant vers le document, l'événement synthétique est exécuté

Apprentissage recommandé : "Tutoriel vidéo React"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn