


Quelles sont les différentes manières d'écrire des événements de clic de réaction ?
Méthode d'écriture : 1. Utilisez "onClick={this.handleClick}" ; 2. Utilisez "onClick={this.handleClick.bind(this)}" ; 3. Utilisez "{(params)=>this.handleClick ( paramètres)}".
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>
handleClick est défini comme ceci :
handleClick = () => { // do something here};
ou
// poignéeCliquez utilise (fonction ordinaire) pour définir
onClick = { this .handleClick.bind(this) }
// handleClick用普通函数定义时,为onClick添加事件应该这么写:<Button onClick = { this.handleClick.bind(this) }></Button>
handleClick est défini comme ceci :
handleClick () { // do something here }
- pass settings
// handleClick peut être défini en utilisant
/(fonction ordinaire)
onClick = { (params ) => this.handleClick(params) }
// handleClick可以是箭头函数,也可以是普通函数<Button onClick = { (params) => this.handleClick(params) }></Button>
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;
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;
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> )}
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
render() { return ( <p> // 通过箭头函数传参 <Button onClick = { (params) => this.handleClick(params) }></Button> </p> )}
Analyse :
Passer des paramètres via des fonctions fléchées équivaut à une liaison onClick Une fonction flèche est définieQuand 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 connexionMais 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>
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> // 传参
推荐学习:《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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds





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 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 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 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 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 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 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 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
