Table des matières
Quelles sont les différentes façons d'écrire des événements de clic de réaction
Cette analyse de pointage" >Cette analyse de pointage
1. onClick = { this.handleClick } + fonction flèche " >1. onClick = { this.handleClick } + fonction flèche
2 onClick = { this.handleClick.bind(this) } + fonction ordinaire. " >2 onClick = { this.handleClick.bind(this) } + fonction ordinaire.
Maison interface Web Questions et réponses frontales Quelles sont les différentes manières d'écrire des événements de clic de réaction ?

Quelles sont les différentes manières d'écrire des événements de clic de réaction ?

Apr 22, 2022 am 10:28 AM
react

Méthode d'écriture : 1. Utilisez "onClick={this.handleClick}" ; 2. Utilisez "onClick={this.handleClick.bind(this)}" ; 3. Utilisez "{(params)=>this.handleClick ( paramètres)}".

Quelles sont les différentes manières d'écrire des événements de clic de réaction ?

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

Quelles sont les différentes façons d'écrire des événements de clic de réaction

Allons droit au but. Tout d'abord, donnons la bonne façon d'ajouter un événement à un bouton :

La bonne façon d'ajouter un événement onclick à un bouton.

  • Aucun paramètre n'est transmis

// handleClick utilise pour définir
onClick = { this.handleClick }

// handleClick用箭头函数定义时,为onClick添加事件应该这么写:<Button onClick = { this.handleClick }></Button>
Copier après la connexion

handleClick est défini comme ceci :

handleClick = () => { // do something here};
Copier après la connexion

ou

// poignéeCliquez utilise (fonction ordinaire) pour définir
onClick = { this .handleClick.bind(this) }

// handleClick用普通函数定义时,为onClick添加事件应该这么写:<Button onClick = { this.handleClick.bind(this) }></Button>
Copier après la connexion

handleClick est défini comme ceci :

handleClick () { // do something here }
Copier après la connexion
  • pass settings

// handleClick peut être défini en utilisant /(fonction ordinaire)
onClick = { (params ) => this.handleClick(params) }

 // handleClick可以是箭头函数,也可以是普通函数<Button onClick = { (params) => this.handleClick(params) }></Button>
Copier après la connexion

Ensuite, analysons pourquoi il est correct d'écrire comme ceci :

Cette analyse de pointage

Comprenez ce problème avec les phrases suivantes :

La fonction flèche n'a pas son propre ceci, donc c'est ceci : ceci du contexte lorsqu'elle est définie
La fonction ordinaire a son propre ceci, donc c'est ceci : ceci du contexte contexte lorsqu'il est exécuté

Regardons d'abord le premier. Une façon d'écrire :

1. onClick = { this.handleClick } + fonction flèche

Le code ci-dessous est : ajouter un événement onclick (un complete jsx) pour un bouton

// examplePage.jsximport React from 'react';import { Button } from 'antd';class examplePage extends React.Component {
    // 2. 定义handleClick事件
    handleClick = () => {
        console.log(this); //3. this指向examplePage
    }

    render() {
        return (
            <p>
            // 1. 为onClick绑定 handleClick事件处理函数
                <Button onClick = { this.handleClick }>click me</Button>
            </p>
        )
    }}export default examplePage;
Copier après la connexion

Cliquez sur le bouton et imprimez le pointeur vers examplePage this:

this: examplePage {props: Object, context: {}, refs: {}, updater: Object, state: {} , …}

Analyse :

  • Lorsque le bouton est cliqué, l'événement handleClick est appelé fonction de gestion,
  • Parce que handleClick est une fonction flèche, c'est donc le ceci du contexte lorsqu'il est défini,
  • handleClick est défini dans la classe examplePage,
  • donc cela pointe vers examplePage
  • Voyons si la fonction flèche est remplacée par une fonction normale Situation :

2 onClick = { this.handleClick.bind(this) } + fonction ordinaire.

Voyons d'abord ce que console.log(this) affichera si bind(this) n'est pas utilisé :

// examplePage.jsximport React from 'react';import { Button } from 'antd';class examplePage extends React.Component {
    // 2. !将箭头函数改为普通函数
    handleClick () {
        console.log(this); // 3. this 为 undefined
    }

    render() {
        return (
            <p>
            // 1. 为onClick绑定 handleClick事件处理函数
                <Button onClick = { this.handleClick }>click me</Button>
            </p>
        )
    }}export default examplePage;
Copier après la connexion

Cliquez sur le bouton et imprimez ceci :

this: undefined

Analyse :

  • Lorsque l'on clique sur le bouton, la fonction de traitement d'événement handleClick est appelée,
  • Parce que handleClick est une fonction ordinaire, c'est donc le contexte d'exécution,
  • handleClick est exécuté lorsqu'un bouton est cliqué sur la page. la page html
  • Donc, ceci n'est pas défini et ne pointe pas vers l'exemplePage

Remarque : dans la version stricte, la valeur par défaut n'est plus une fenêtre, mais undéfini
Le code du module est toujours un code en mode strict.
Toutes les parties de a ClassDeclaration ou ClassExpression sont du code en mode strict.

Vous devez donc utiliser bind pour changer ce pointeur, c'est-à-dire :

render() {
    return (
        <p>
        // 用bind改变this指向
           <Button onClick = { this.handleClick.bind(this) }>click me</Button>
        </p>
    )}
Copier après la connexion

Analyse :

  • Lorsque vous cliquez sur le bouton, appelez la fonction de traitement d'événement handleClick, via la liaison (), transmet ceci de la fonction render (pointant vers la classe examplePage) en tant que variable dans handleClick. À l'origine, handleClick est une fonction ordinaire, et c'est le this du contexte d'exécution (c'est-à-dire undefined ), mais parce que bind(this) est passé. in - - cela pointait vers examplePage
  • Donc, pour le moment, cela pointe vers examplePage, ce qui résout le problème de son indéfini
  • Après avoir compris les deux ci-dessus, le dernier est facile à comprendre
3. { (params) => this.handleClick(params) } + Des fonctions ordinaires/fonctions fléchées peuvent être utilisées

render() {
    return (
        <p>
        // 通过箭头函数传参
           <Button onClick = { (params) => this.handleClick(params) }></Button>
        </p>
    )}
Copier après la connexion

Analyse :

Passer des paramètres via des fonctions fléchées équivaut à une liaison onClick Une fonction flèche est définie

Quand le bouton est cliqué, la fonction flèche (params) => this.handleClick(params) est appelée, c'est donc le this du contexte lorsqu'il est défini,
  • handleClick est défini dans la classe examplePage,
  • Donc ceci pointe vers examplePage
  • Selon cette idée, tant que l'événement de réponse onClick est écrit avec une fonction de flèche, lorsqu'il est appelé, cela pointe vers la classe du composant, et il n'y aura pas de problème
  • Ensuite, lorsqu'aucun paramètre n'est transmis, écrivez simplement :
  • <Button onClick = { () => this.handleClick() }></Button>
    Copier après la connexion
  • Mais ce n'est pas faisable, car réagir analysera directement () => this.handleClick(), handleClick sera appelé, ce qui équivaut à onClick = "Le résultat de l'appel de handleClick"

Donc, quand aucun paramètre n'est transmis, vous ne pouvez écrire que comme ceci :

<Button onClick = { this.handleClick }></Button>
Copier après la connexion

Résumé

Il est possible de répondre aux trois premières questions

  • 什么情况下需要bind(this)?
    答: onClick传入的事件处理函数是普通函数的时候,需要bind(this)来改变指向
  • 为什么要用bind(this)?
    答:如果不用bind(this), this会指向undefined
  • 可以不用bind(this)吗?
    答:用箭头函数 (用箭头函数定义事件处理函数)
//定义handleClick事件
handleClick = () => {
      // do something here
};

//为onClick绑定handleClick事件处理函数
<Button onClick = {this.handleClick}></Button> // 不传参
<Button onClick = {(param) => this.handleClick(param) }></Button> // 传参
Copier après la connexion

推荐学习:《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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer une application de chat en temps réel avec React et WebSocket Comment créer une application de chat en temps réel avec React et WebSocket Sep 26, 2023 pm 07:46 PM

Comment créer une application de chat en temps réel à l'aide de React et WebSocket Introduction : Avec le développement rapide d'Internet, la communication en temps réel a attiré de plus en plus d'attention. Les applications de chat en direct font désormais partie intégrante de la vie sociale et professionnelle moderne. Cet article expliquera comment créer une application simple de chat en temps réel à l'aide de React et WebSocket, et fournira des exemples de code spécifiques. 1. Préparation technique Avant de commencer à créer une application de chat en temps réel, nous devons préparer les technologies et outils suivants : React : un pour la construction

Guide pour la séparation du front-end et du back-end de React : Comment réaliser le découplage et le déploiement indépendant du front-end et du back-end Guide pour la séparation du front-end et du back-end de React : Comment réaliser le découplage et le déploiement indépendant du front-end et du back-end Sep 28, 2023 am 10:48 AM

Guide de séparation front-end et back-end de React : Comment réaliser un découplage front-end et back-end et un déploiement indépendant, des exemples de code spécifiques sont nécessaires Dans l'environnement de développement Web actuel, la séparation front-end et back-end est devenue une tendance. En séparant le code front-end et back-end, le travail de développement peut être rendu plus flexible, plus efficace et faciliter la collaboration en équipe. Cet article expliquera comment utiliser React pour réaliser une séparation front-end et back-end, atteignant ainsi les objectifs de découplage et de déploiement indépendant. Tout d’abord, nous devons comprendre ce qu’est la séparation front-end et back-end. Dans le modèle de développement Web traditionnel, le front-end et le back-end sont couplés

Comment créer des applications Web simples et faciles à utiliser avec React et Flask Comment créer des applications Web simples et faciles à utiliser avec React et Flask Sep 27, 2023 am 11:09 AM

Comment utiliser React et Flask pour créer des applications Web simples et faciles à utiliser Introduction : Avec le développement d'Internet, les besoins des applications Web deviennent de plus en plus diversifiés et complexes. Afin de répondre aux exigences des utilisateurs en matière de facilité d'utilisation et de performances, il devient de plus en plus important d'utiliser des piles technologiques modernes pour créer des applications réseau. React et Flask sont deux frameworks très populaires pour le développement front-end et back-end, et ils fonctionnent bien ensemble pour créer des applications Web simples et faciles à utiliser. Cet article détaillera comment exploiter React et Flask

Comment créer une application de messagerie fiable avec React et RabbitMQ Comment créer une application de messagerie fiable avec React et RabbitMQ Sep 28, 2023 pm 08:24 PM

Comment créer une application de messagerie fiable avec React et RabbitMQ Introduction : Les applications modernes doivent prendre en charge une messagerie fiable pour obtenir des fonctionnalités telles que les mises à jour en temps réel et la synchronisation des données. React est une bibliothèque JavaScript populaire pour créer des interfaces utilisateur, tandis que RabbitMQ est un middleware de messagerie fiable. Cet article explique comment combiner React et RabbitMQ pour créer une application de messagerie fiable et fournit des exemples de code spécifiques. Présentation de RabbitMQ :

Guide de débogage du code React : Comment localiser et résoudre rapidement les bogues frontaux Guide de débogage du code React : Comment localiser et résoudre rapidement les bogues frontaux Sep 26, 2023 pm 02:25 PM

Guide de débogage du code React : Comment localiser et résoudre rapidement les bogues frontaux Introduction : Lors du développement d'applications React, vous rencontrez souvent une variété de bogues qui peuvent faire planter l'application ou provoquer un comportement incorrect. Par conséquent, maîtriser les compétences de débogage est une capacité essentielle pour tout développeur React. Cet article présentera quelques techniques pratiques pour localiser et résoudre les bogues frontaux, et fournira des exemples de code spécifiques pour aider les lecteurs à localiser et à résoudre rapidement les bogues dans les applications React. 1. Sélection des outils de débogage : In Re

Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Sep 29, 2023 pm 05:45 PM

Guide de l'utilisateur de ReactRouter : Comment implémenter le contrôle du routage frontal Avec la popularité des applications monopage, le routage frontal est devenu un élément important qui ne peut être ignoré. En tant que bibliothèque de routage la plus populaire de l'écosystème React, ReactRouter fournit des fonctions riches et des API faciles à utiliser, rendant la mise en œuvre du routage frontal très simple et flexible. Cet article expliquera comment utiliser ReactRouter et fournira quelques exemples de code spécifiques. Pour installer ReactRouter en premier, nous avons besoin

Comment créer une application d'analyse de données rapide à l'aide de React et Google BigQuery Comment créer une application d'analyse de données rapide à l'aide de React et Google BigQuery Sep 26, 2023 pm 06:12 PM

Comment utiliser React et Google BigQuery pour créer des applications d'analyse de données rapides Introduction : À l'ère actuelle d'explosion de l'information, l'analyse des données est devenue un maillon indispensable dans diverses industries. Parmi eux, créer des applications d’analyse de données rapides et efficaces est devenu l’objectif poursuivi par de nombreuses entreprises et particuliers. Cet article explique comment utiliser React et Google BigQuery pour créer une application d'analyse rapide des données et fournit des exemples de code détaillés. 1. Présentation React est un outil pour créer

Comment créer des applications de traitement de données en temps réel à l'aide de React et Apache Kafka Comment créer des applications de traitement de données en temps réel à l'aide de React et Apache Kafka Sep 27, 2023 pm 02:25 PM

Comment utiliser React et Apache Kafka pour créer des applications de traitement de données en temps réel Introduction : Avec l'essor du Big Data et du traitement de données en temps réel, la création d'applications de traitement de données en temps réel est devenue la priorité de nombreux développeurs. La combinaison de React, un framework front-end populaire, et d'Apache Kafka, un système de messagerie distribué hautes performances, peut nous aider à créer des applications de traitement de données en temps réel. Cet article expliquera comment utiliser React et Apache Kafka pour créer des applications de traitement de données en temps réel, et

See all articles