国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React 中事件處理

這篇具有很好參考價(jià)值的文章主要介紹了React 中事件處理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

不要問自己需要什么樣的人生,而要問自己想要成為什么樣的人。

我們從前面的學(xué)習(xí)知道一個(gè) React 組件不僅僅只包含 DOM 結(jié)構(gòu)的,還應(yīng)該樣式和 Javascript 邏輯的。這里我們認(rèn)識(shí)邏輯構(gòu)造之事件處理。

1. React 事件處理

這里列舉了在 React 中事件的幾種綁定處理方式:

import React, { Component } from "react";

class App extends Component {
  render () {
    return (
      <div>
        <input/>
        <button onClick={ ()=>{ console.log("第一種事件綁定處理方式") }}>Add-1</button>
        <button onClick={ this.handleClick2 }>Add-2</button>
        <button onClick={ this.handleClick3 }>Add-3</button>
        <button onClick={ ()=>{ this.handleClick4() } }>Add-4</button>
      </div>
    )
  }

  handleClick2() {
    console.log("第二種事件綁定處理方式")
  }

  handleClick3 = ()=>{
    console.log("第三種事件綁定處理方式")
  }

  handleClick4 = ()=>{
    console.log("第四種事件綁定處理方式")
  }
}

export default App;

2. 事件綁定區(qū)別

這里重點(diǎn)說明下在事件和事件綁定綁定中 this 指向問題。

2.1 匿名函數(shù)

直接執(zhí)行匿名函數(shù),直接在 {} 中寫事件函數(shù)表達(dá)式。

寫法特點(diǎn):

  • 適合邏輯少、簡(jiǎn)單表達(dá)式。如果處理邏輯過多、復(fù)雜 ,會(huì)導(dǎo)致結(jié)構(gòu)不清晰,難維護(hù),不推薦。
  • 事件內(nèi)部 this 指向和外部一致,因?yàn)榧^函數(shù)沒有 this 指向問題原則。

能直接訪問:

  • 因?yàn)?onClick 后面表達(dá)式跟的是一個(gè)函數(shù)(箭頭函數(shù)),這里事件內(nèi)部 this 指向和外部一致。
class App extends Component {
 // 定義屬性
 value = 100

 render () {
  return (
    <div>
      <input/>
      <button onClick={ ()=>{ console.log("第一種事件綁定處理方式", this.value) }}>Add-1</button>
    </div>
  )
}

2.2 調(diào)用內(nèi)部普通函數(shù)

寫法特點(diǎn):this 指向和外部不一致,需要用 bind 修正 this 指向,不推薦使用。

<button onClick={ this.handleClick2 }>Add-2</button>
// 修正后:
<button onClick={ this.handleClick2.bind(this) }>Add-2</button>

handleClick2() {
  // 異常,需要通過改變 this 指向解決
  console.log("第二種事件綁定處理方式", this.value) 
}

不能直接訪問:

這里訪問類屬性 this.value 會(huì)報(bào)錯(cuò),我們可以打印出 this 看下它指向什么,結(jié)果會(huì)是:undefined。為什么 this 會(huì)丟失呢?記住一句話:函數(shù)中的 this 誰調(diào)用我,this 就指向誰。這里點(diǎn)完按鈕后被 React 事件系統(tǒng)調(diào)用的,this 指向的應(yīng)該是 React 事件系統(tǒng)。用于不會(huì)指向 App 這個(gè)實(shí)例。而這里它也沒有指向 React 事件系統(tǒng),而是丟了指向 undefined。哈哈哈....

2.3 調(diào)用內(nèi)部箭頭函數(shù)

寫法特點(diǎn):this 指向和外部一直,沒有 this 指向問題,推薦使用。

<button onClick={ this.handleClick3 }>Add-3</button>

handleClick3 = ()=>{
  console.log("第三種事件綁定處理方式", this.value)
}

這里是箭頭函數(shù),this 指向根本不關(guān)心誰調(diào)用的我,它永遠(yuǎn)保持與外部作用域一樣的,它指向的 app 的實(shí)例。為什么箭頭函數(shù) this 指向就不關(guān)心誰調(diào)用的我呢?我也不知道.... 難到....

  • 箭頭函數(shù)會(huì)自動(dòng)改變 this 的指向???
  • 或者箭頭函數(shù)不是改變 this 指向,而是引用上一個(gè)作用域的 this ???
  • 一個(gè)比較權(quán)威的解釋是在箭頭函數(shù)中,this 與封閉詞法上下文的 this 保持一致。在全局代碼中,它將被設(shè)置為全局對(duì)象。

2.4 執(zhí)行匿名函數(shù),調(diào)用其他內(nèi)部函數(shù)

寫法特點(diǎn):this 指向和外部一直,沒有 this 指向問題,符合誰調(diào)用我我指向誰。非常推薦使用這種寫法,參數(shù)傳遞很方便。

<button onClick={ ()=>{ this.handleClick4() } }>Add-4</button>
// 語法簡(jiǎn)寫:
<button onClick={ ()=>this.handleClick4() }>Add-4</button>

// 有人說這里是因?yàn)槟銓懗闪思^函數(shù)了吧,即使他不寫成箭頭函數(shù)也沒關(guān)系,剛才講的原理,符合誰調(diào)用我我指向誰。
handleClick4 = ()=>{
  console.log("第四種事件綁定處理方式", this.value)
}

整體有個(gè)問題: 要不要加小括號(hào),不加不讓他自己主動(dòng)執(zhí)行,點(diǎn)擊系統(tǒng)會(huì)調(diào)用、加小括號(hào)執(zhí)行函數(shù)。加小闊號(hào)主動(dòng)執(zhí)行,點(diǎn)擊后不執(zhí)行 undefined。

2.5 JS 中修正 this 指向方案

  • call:改變 this 指向,自動(dòng)執(zhí)行函數(shù);
  • apply:改變 this 指向,自動(dòng)執(zhí)行函數(shù);
  • bind:改變 this 指向,不會(huì)自動(dòng)執(zhí)行函數(shù),需要手動(dòng)加括號(hào)執(zhí)行函數(shù) ;
var obj1 = {
  name: "obj1",
  getName() {
    console.log(this.name)
  }
}

var obj2 = {
  name: "obj2",
  getName() {
    console.log(this.name)
  }
}

// this.name 誰調(diào)用我我指向誰
obj1.getName() // 結(jié)果 obj1
obj2.getName() // 結(jié)果 obj2

// call, reply :修改 obj1 getName 中 this 指向 obj2
obj1.getName.call(obj2) // 結(jié)果 obj2
obj2.getName() // 結(jié)果 obj2

3. 總結(jié)事件處理

3.1 this 指向問題,記住兩句話

  • 誰調(diào)用我我指向誰原則;
  • 箭頭函數(shù)沒有 this 指向問題;

3.2 React 事件綁定和原生事件綁定有什么區(qū)別?

React 中事件綁定沒有綁定到具體的 DOM 節(jié)點(diǎn)(元素)身上。它采用的是一種事件代理的模式,綁定在根節(jié)點(diǎn)身上。綁定到每一個(gè) DOM 節(jié)點(diǎn)身上是很消耗內(nèi)存的。

React 模擬了一套事件冒泡機(jī)制,等冒泡到根節(jié)點(diǎn)上通過 target 事件源找到是那個(gè)元素真實(shí)觸發(fā)的,然后從這個(gè)觸發(fā)的元素到頂點(diǎn)所有節(jié)點(diǎn)都去查一查,有沒有一個(gè)叫 onClick 屬性,如果有就把這個(gè) onClick 事件給執(zhí)行了,完整模擬冒泡的流程,即模擬系統(tǒng)事件機(jī)制。其不需要考慮解綁、移除事件等,只有節(jié)點(diǎn)從頁面中沒了,onClick 根本就不會(huì)再有了,沒有綁定只有節(jié)點(diǎn)沒了 onClick 就沒了。

3.3 Event 事件對(duì)象也是支持的

Event 對(duì)象,和普通瀏覽器一樣,事件 handler 會(huì)被自動(dòng)傳入一個(gè) event 對(duì)象,這個(gè)對(duì)象和普通的瀏覽器 event 對(duì)象所包含的方法和屬性都基本一致。不同的是 React 中的 event 對(duì)象并不是瀏覽器提供的,而是它自己內(nèi)部所構(gòu)建的。它同樣具有 event . stoppropagation、event.preventDefault 這種常用的方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-747390.html

到了這里,關(guān)于React 中事件處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 華東師范大學(xué)副校長(zhǎng)周傲英:未來,中國需要什么樣的數(shù)據(jù)庫?

    華東師范大學(xué)副校長(zhǎng)周傲英:未來,中國需要什么樣的數(shù)據(jù)庫?

    本文為華東師范大學(xué)副校長(zhǎng),CCF 會(huì)士周傲英教授在第一屆 OceanBase 開發(fā)者大會(huì)帶來的分享。歡迎訪問 OceanBase 官網(wǎng)獲取更多信息:https://www.oceanbase.com/ 3 月 25 日,第一屆 OceanBase 開發(fā)者大會(huì)在北京舉行,華東師范大學(xué)副校長(zhǎng),CCF 會(huì)士周傲英教授帶來了《未來,中國需要什么樣

    2024年02月08日
    瀏覽(27)
  • 【解鎖未來】讓微軟Copilot介紹自己,再由ChatGPT潤(rùn)色文章,到底能成什么樣?

    今天突發(fā)奇想,如果讓 微軟Copilot介紹自己,再由ChatGPT潤(rùn)色文章,到底能成什么樣? 問:撰寫關(guān)于微軟bing的文章 微軟bing是一款全球領(lǐng)先的搜索引擎,它可以幫助用戶快速、準(zhǔn)確、安全地找到所需的信息。微軟bing不僅提供了豐富的搜索功能,如網(wǎng)頁、圖片、視頻、新聞、地

    2024年02月05日
    瀏覽(30)
  • 【從零開始拿捏數(shù)據(jù)結(jié)構(gòu)】 順序表是什么?它有什么樣的特性?結(jié)構(gòu)到底是什么樣的?

    【從零開始拿捏數(shù)據(jù)結(jié)構(gòu)】 順序表是什么?它有什么樣的特性?結(jié)構(gòu)到底是什么樣的?

    ?? 嶼小夏 : 個(gè)人主頁 ??個(gè)人專欄 : 數(shù)據(jù)結(jié)構(gòu)解析 ?? 莫道桑榆晚,為霞尚滿天! ? 什么是數(shù)據(jù)結(jié)構(gòu)?我們?yōu)槭裁匆獙W(xué)數(shù)據(jù)結(jié)構(gòu)?數(shù)據(jù)結(jié)構(gòu)中的順序表長(zhǎng)什么樣子?它是怎么運(yùn)用? ? 本期我們將對(duì)這些一一講解,徹底明白數(shù)據(jù)結(jié)構(gòu)的重要性,以及順序表是一種什么的數(shù)據(jù)

    2024年02月08日
    瀏覽(28)
  • IPD是什么?適合什么樣的團(tuán)隊(duì)?

    IPD是什么?適合什么樣的團(tuán)隊(duì)?

    IPD,全稱為“Integrated Project Delivery”,即集成產(chǎn)品開發(fā)。它是一種全新的項(xiàng)目管理方法,最初源于建筑行業(yè),隨著時(shí)間的推移,已經(jīng)應(yīng)用到了各行各業(yè)的項(xiàng)目管理中。IPD是一種以協(xié)同合作為核心的工作模式,在這種模式下,項(xiàng)目中的所有相關(guān)方在項(xiàng)目的整個(gè)生命周期中進(jìn)行更

    2024年02月13日
    瀏覽(28)
  • 抖客是種什么樣的盈利方式

    抖客是什么?怎么推廣?如何設(shè)置?抖客聯(lián)盟app有什么用,類似抖客聯(lián)盟的app有哪些,抖客是種什么樣的盈利方式 抖音直播間引流、增長(zhǎng),抖客來幫忙!助力MCN機(jī)構(gòu)培養(yǎng)達(dá)人,提升達(dá)人等級(jí),這時(shí)候也需要一大批抖客,大家是否知道抖客是什么呢?應(yīng)該要怎么進(jìn)行推廣呢? “抖客”

    2023年04月08日
    瀏覽(20)
  • 法線貼圖可以實(shí)現(xiàn)什么樣的3D效果

    法線貼圖可以實(shí)現(xiàn)什么樣的3D效果

    在線工具推薦: 3D數(shù)字孿生場(chǎng)景編輯器 ?-? GLTF/GLB材質(zhì)紋理編輯器 ?-? 3D模型在線轉(zhuǎn)換 ?-? Three.js AI自動(dòng)紋理開發(fā)包 ?-? YOLO 虛幻合成數(shù)據(jù)生成器 ?-? 三維模型預(yù)覽圖生成器 ?-? 3D模型語義搜索引擎 在 3D 建模中,曲面由多邊形表示。照明計(jì)算是基于這些多邊形的幾何形狀執(zhí)

    2024年02月03日
    瀏覽(25)
  • 百萬贊同:網(wǎng)絡(luò)安全為什么缺人? 缺什么樣的人?

    百萬贊同:網(wǎng)絡(luò)安全為什么缺人? 缺什么樣的人?

    1.網(wǎng)絡(luò)安全為什么缺人? 缺人的原因是有了新的需求 以前的時(shí)候,所有企業(yè)是以產(chǎn)品為核心的,管你有啥漏洞,管你用戶信息泄露不泄露,我只要做出來的產(chǎn)品火爆就行。 這一切隨著《網(wǎng)絡(luò)安全法》、《數(shù)據(jù)安全法》、《網(wǎng)絡(luò)安全審查辦法》等一系列有關(guān)網(wǎng)絡(luò)安全的法律法規(guī)

    2023年04月23日
    瀏覽(30)
  • CRM系統(tǒng)如何搭建?流程是什么樣的?

    CRM系統(tǒng)如何搭建?流程是什么樣的?

    ? CRM系統(tǒng)可以提高企業(yè)的銷售效率和客戶滿意度,從而增加企業(yè)的收入和利潤(rùn)。但是,要想成功地上線CRM系統(tǒng),需要經(jīng)過一系列的步驟和流程,下面說說, 企業(yè)如何上線CRM系統(tǒng)?CRM系統(tǒng)搭建流程。 需求分析是CRM系統(tǒng)搭建的第一步,也是最重要的一步。在這個(gè)階段,企業(yè)需要

    2024年02月13日
    瀏覽(19)
  • 舒適交友 - 什么樣的婚姻最舒服 穩(wěn)態(tài)婚姻

    舒適交友 - 什么樣的婚姻最舒服 穩(wěn)態(tài)婚姻

    人人都是心理學(xué)家,mbti等_個(gè)人渣記錄僅為自己搜索用的博客-CSDN博客 人生兩大目標(biāo):? 生產(chǎn)力提升 +? 讓身邊的人快樂. 目錄 1. 相處是舒服的, 能夠聊天, 分享欲, 表達(dá)欲 2. 追求的東西另外一方能支持, 滿足. 3. 少被影響. 為什么說離我們遠(yuǎn)的人成功對(duì)我們沒有什么影響,但是身邊

    2024年02月06日
    瀏覽(24)
  • 工具在接口測(cè)試中發(fā)揮什么樣的作用?

    工具在接口測(cè)試中發(fā)揮什么樣的作用?

    接口測(cè)試究竟是什么?為什么要用接口測(cè)試?它有哪些工具呢?這一連串的問題敲擊著我們,請(qǐng)帶著這些問題,在本文中尋找答案,我將為您打開接口測(cè)試的大門。 1 初探接口測(cè)試 接口測(cè)試是什么。它檢查數(shù)據(jù)的交換,傳遞和控制管理過程,它繞過了移動(dòng)端,對(duì)服務(wù)端進(jìn)行測(cè)

    2023年04月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包