亚洲国产爱久久全部精品_日韩有码在线播放_国产欧美在线观看_中文字幕不卡在线观看

React中的事件

在大多的Web頁面或Web應用程序中,構建UI僅僅是其中小小的一部分,其中有些U是純靜態的,但有些UI是會隨著用戶的操作帶來相應變化的。愛掏網 - it200.com比如,用戶通過鼠標點擊,鍵盤按下,視窗大小調整或一系列其他的手勢和交互來觸發。愛掏網 - it200.com而這些我們往往稱之為事件愛掏網 - it200.com在Web中處理事件都是交給JavaScript來完成,同樣的,在React中也有相應的事件。愛掏網 - it200.com在這一節開始,我們就來學習React中的事件。愛掏網 - it200.com

你可能在DOM的世界中對事件的使用有一定的了解。愛掏網 - it200.com如果沒有,也不用擔心,我們在開啟探討React的事件之前會對JavaScript中的事件做一個初步的了解。愛掏網 - it200.com

Web頁面或Web應用程序總是會提供一些控件給用戶操作的。愛掏網 - it200.com簡單地說,用戶做了一個操作,會發生什么。愛掏網 - it200.com或者說,應用程序用什么方法讓它們對已知的事件作出反應。愛掏網 - it200.com

在開始之前,我們必須了解事件是什么?這個很簡單,在Web中創建的所有東西都可以通過以下的語句來建模:

在Web中我們可以用無數種不同的方法來填補這句話中的空白之處。愛掏網 - it200.com第一個()表示發生了什么?第二個()描述相應的操作會發生什么?比如下面這些例子:

  • 當(頁面加載)完成時,請(播放視頻
  • 當(點擊)發生時,請(提交表單
  • 當(鼠標釋放)時,請(放大圖片
  • 當(按下刪除鍵)時,請將此(列表項刪除
  • 當(觸摸手勢)發生時,請將(舊照片過濾掉
  • 當(文件下載)完時,請(更新進度條

這種模型適用于我們所有的編碼。愛掏網 - it200.com不過,事件只不過是一個信號。愛掏網 - it200.com它表示剛剛發生了什么事。愛掏網 - it200.com而這個事件是可以鼠標點擊鍵盤按下觸摸手勢等。愛掏網 - it200.com回到我們所說的事件模型中,模型的前半部分是我們所說的事件,后面部分是事件反應

用到我們生活中來的話,有點類似于我們發送了一個信號,等事物接到這個信號就會做出一個對應的響應。愛掏網 - it200.com而且在JavaScript中,事件又是非常重要的。愛掏網 - it200.com如果用專業術語來描述的話,其包含兩個部分:

  • 事件偵聽
  • 事件做出的反應

這兩個步驟看起來非常簡單,但是不要忘記這是在JavaScript中處理。愛掏網 - it200.com如果我們稍微走錯了一步,都會給我們的應用程序帶來巨大的創傷。愛掏網 - it200.com

事件偵聽

在JavaScript中有三種方式可以為DOM元素注冊事件處理函數(即給元素添加事件偵聽)。愛掏網 - it200.com

addEventListener

最常見的就是通過addEventListener來給目標元素添加事件偵聽。愛掏網 - it200.com比如:

myButton.addEventListener('click', function(){
    alert('Hello, World!')
}, false)

HTMl屬性

我們可以在HTML元素中添加事件:



DOM元素屬性

我們也可以直接給一個DOM元素屬性添加相應的事件:

myButton.onclick = function(e){alert('Hello, World!')}

通常情況下,我們都習慣于使用addEventListener來給目標元素(DOM元素)添加事件:

targetElement.addEventListener(eventName, eventHandler, false)

簡單介紹一下其組成部分:

  • targetElement:要偵聽事件的元素或對象。愛掏網 - it200.com通常是一個DOM元素,也可以是documentwindow或任何專門用于觸發事件的對象
  • eventName:事件名稱,在JavaScript中有關于事件的名稱列表可以點擊這里查閱
  • eventHandler:事件處理程序,就是程序要做的事情(比如用戶點擊了按鈕,會發生什么事情?)
  • 事件冒泡或捕獲:這是最后一個參數,在JavaScript中指的是事件冒泡或捕獲

放到一起之后,他可能像下面這樣:

btnEle.addEventListener('click',showMessage('大漠'), false)

const showMessage = (name) => {
    alert(`Hello, ${name}~`)
}

事件捕獲或冒泡

在JavaScript事件中還有一個很重要的概念,也比前面有關于事件的基礎知識更為復雜,那就是事件捕獲和事件冒泡愛掏網 - it200.com為了更好的幫助我們理解事件中有關于這兩方面的概念,使用一個簡單的示例來向大家闡述。愛掏網 - it200.com




    
        
            
                
                    
                
                
                    
                    
                
            
        
        
    

如果我們用DOM樹來描述上面的HTML結構的話,大致像下圖這樣:

假設用戶點擊了buttonOne按鈕,即觸發了一個click事件。愛掏網 - it200.com很多同學都會認為click事件是從目標元素buttonOne開始觸發,事實上并非如此,click事件從文檔的根開始(即window)。愛掏網 - it200.com如果用圖來描述的話,如下;

click事件從文檔根(window)開始,然后按照DOM樹的路徑一級一級往下尋找,直到觸發click事件的butttOne元素(也稱為事件目標)停止:

正如上圖所示,事件所經過的路徑是直的,它會通知該路徑上的每個元素。愛掏網 - it200.com如果該路徑上有與當前事件匹配的元素,那么就會調用對應的事件處理程序。愛掏網 - it200.com一旦事件達到目標,它就不會停止。愛掏網 - it200.com不同的是,事件會往上移。愛掏網 - it200.com事件路徑上的每個元素都會得到其存在的通知。愛掏網 - it200.com出現的任何事件處理程序也將被調用。愛掏網 - it200.com

需要注意的是,事件在哪個位置啟動并不重要,因為事件總是從文檔的根開始,向下直接到達目標,然后返回根愛掏網 - it200.com在這樣的一個過程中,從根開始向下尋找事件目標的過程被稱為事件捕獲階段:

反過來,事件從目標元素向文檔根元素的過程被稱為事件冒泡階段:

也就是說,當一個事件被觸發時,會得到兩次通知愛掏網 - it200.com每次監聽事件時,我們都會選擇要監聽哪個階段的事件。愛掏網 - it200.com這是一個細節,我們可以給addEventListener指定truefalse來進行設置:

  • true:表示在捕獲階段偵聽事件
  • false:表示在冒泡階段偵聽事件

有的時候我們需要結束事件的生命周期。愛掏網 - it200.com只需要在事件對象上使用stopPropagation方法即可:

const handleClick = (e) => {
    e.stopPropagation()
}

上面這些是JavaScript中事件的基礎知識,如果你想了解更多有關于JavaScript事件相關的知識,可以閱讀下面這些教程:

  • DOM事件簡介
  • DOM事件的傳播
  • DOM事件模型
  • 事件綁定的姿勢
  • UI Events
  • Javascript Events Tutorial with Complete List of Events
  • An Introduction To DOM Events
  • Understanding Events in JavaScript
  • Browser Events and Event Listeners
  • Introduction to Events
  • JavaScript Event Loop Explained
  • Understanding Javascript Function Executions — Call Stack, Event Loop , Tasks & more
  • The JavaScript Event Loop
  • JavaScript 運行機制詳解:再談Event Loop
  • Faster async functions and promises
  • JavaScript. Event Loop and Promises

基于我們現有的JavaScript經驗,你可能已經非常習慣使用事件。愛掏網 - it200.com但是,在React中處理事件的方式和JavaScript有所不同。愛掏網 - it200.comReact沒有直接針對DOM事件,而是將它們包裝在自己的事件包裝器中愛掏網 - it200.com在接下來的小節中,我將和大家一起探討和學習React中事件相關的知識點。愛掏網 - it200.com

創建事件

為了更好的和大家聊React中的事件,我們從一個簡單的示例開始。愛掏網 - it200.com該示例創建一個包含inputbutton的表單控件。愛掏網 - it200.cominput可以輸出你想要的文本內容,當input輸入一個值時,將觸發一個事件(一般是onChange)事件。愛掏網 - it200.com另外,用戶點擊按鈕時,也會觸發一個事件(一般是onClick)事件,該事件會調用一個函數,該函數會將文本框的內容(文本)反轉。愛掏網 - it200.com

該示例大致是這樣工作的:

  • 一個input,可以讓用戶輸入想要的內容
  • 當用戶在input中輸入值時,將會觸發onChange事件,它會調用一個handleChange()函數,該函數用于設置input的新狀態
  • 當用戶點擊“點擊我”按鈕時(button),會觸發另一個事件,該事件會調用handleReverse()函數,將輸入框的文本反轉

該示例的代碼大致如下:

const App = () => {
    const [inputVal, setInputVal] = React.useState('')
    const [reversedText, setReversedText] = React.useState('')

    const handleChange = e => setInputVal(e.currentTarget.value)

    const handleClick = e => {
        e.preventDefault()
        setReversedText(inputVal.split("").reverse().join(""))
    }

    return (
        

{reversedText}

) }

上面示例中是React創建事件方式之一。愛掏網 - it200.com如果你是使用類來創建的組件,那么組件中的創建事件方法可以像下面這樣:

class MyComponent extends React.Component {
    handleClick = () => {
        // ...
    }

    render() {
        return 
    }
}

如果使用React Hooks來創建組件的話,除了上例中useState()方法外,我們還可以使用useRef()方法:

// React Hooks中使用useState()創建事件
class MyComponent = () => {
    const handleClick = e => useState()

    return 
}

// React Hooks中使用useRef()創建事件
class MyComponent = () => {
    const handleChange = e => useRef()

    return 
支付4.99元

聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論0 條評論)
暫無評論

返回頂部

亚洲国产爱久久全部精品_日韩有码在线播放_国产欧美在线观看_中文字幕不卡在线观看

    
    

    9000px;">

      
      

      国产福利一区二区三区视频在线 | 欧美视频精品在线观看| wwwwww.欧美系列| 奇米色一区二区三区四区| 91久久精品日日躁夜夜躁欧美| 国产网站一区二区| 韩国av一区二区三区在线观看| 欧美精品在线一区二区三区| 亚洲综合男人的天堂| 色老汉av一区二区三区| 亚洲天堂精品视频| 色综合 综合色| 亚洲精品国产一区二区三区四区在线| av成人老司机| 亚洲乱码国产乱码精品精的特点 | 国产专区综合网| 久久久精品中文字幕麻豆发布| 激情深爱一区二区| 精品久久久久99| 国产美女精品人人做人人爽| 国产午夜亚洲精品不卡| 成人免费高清在线| 亚洲精品伦理在线| 欧美区一区二区三区| 日本不卡一二三| 日韩免费成人网| 黄色资源网久久资源365| 2023国产精品| 成av人片一区二区| 亚洲一区影音先锋| 日韩一区二区高清| 风间由美一区二区av101| 亚洲三级久久久| 欧美性欧美巨大黑白大战| 日韩av高清在线观看| 精品成a人在线观看| av成人免费在线观看| 亚洲一区二区三区四区在线| 欧美一区二区三区四区在线观看| 九九九久久久精品| 成人免费在线播放视频| 欧美人与禽zozo性伦| 国产一区二区在线免费观看| 亚洲色图另类专区| 日韩视频在线观看一区二区| 成人精品视频一区二区三区 | 成人av网站免费观看| 亚洲美女精品一区| 欧美成人女星排行榜| www.欧美日韩| 日韩不卡免费视频| 国产区在线观看成人精品 | 玉足女爽爽91| 奇米精品一区二区三区在线观看| 成人妖精视频yjsp地址| 蜜桃视频一区二区三区 | 亚洲视频在线观看三级| 天堂av在线一区| 国产精品911| 欧美日韩一区二区三区不卡| 久久久久久久久久看片| 性欧美疯狂xxxxbbbb| 成人性视频网站| 日韩欧美视频一区| 亚洲国产日韩a在线播放性色| 亚洲另类一区二区| 国产精品一区久久久久| 91麻豆精品国产91久久久久久久久 | 亚洲高清免费一级二级三级| 国产精品主播直播| 日韩一区二区免费电影| 亚洲在线视频一区| 99精品国产一区二区三区不卡| 日韩视频免费直播| 亚洲bdsm女犯bdsm网站| 成人av在线观| 亚洲成av人影院在线观看网| 亚洲欧美日韩国产一区二区三区 | 91影视在线播放| 极品瑜伽女神91| 日韩精品亚洲专区| 亚洲与欧洲av电影| 亚洲欧美日韩国产综合| 国产精品免费视频观看| 久久久99久久| 国产婷婷一区二区| 久久久久97国产精华液好用吗| 欧美一级日韩不卡播放免费| 欧美片在线播放| 精品视频在线免费看| 中文一区二区完整视频在线观看| 亚洲日本中文字幕区| 99re在线视频这里只有精品| 自拍偷拍国产精品| 色婷婷久久综合| 亚洲一区二区黄色| 欧美精品在线一区二区三区| 偷窥少妇高潮呻吟av久久免费| 欧美男同性恋视频网站| 日韩精品1区2区3区| 欧美电视剧免费全集观看| 国产精品一区一区三区| 亚洲三级久久久| 欧美人与性动xxxx| 国产乱子伦视频一区二区三区| 中文字幕久久午夜不卡| 日本道精品一区二区三区| 午夜电影一区二区| 欧美岛国在线观看| 99国产精品99久久久久久| 亚洲国产精品影院| 精品少妇一区二区三区视频免付费 | 亚洲成人综合视频| 久久午夜电影网| av成人免费在线| 亚洲国产中文字幕| 2020国产精品| 色欧美日韩亚洲| 狠狠色丁香久久婷婷综合_中| 国产精品热久久久久夜色精品三区 | 欧美日本国产视频| 欧美精品123区| 欧美精品久久一区| 99久久99久久精品免费观看 | 懂色av一区二区三区免费看| 国产激情一区二区三区四区 | 日韩三区在线观看| 日韩免费在线观看| 欧美电影精品一区二区| 日韩丝袜美女视频| 亚洲欧洲另类国产综合| 日韩午夜av一区| 国产主播一区二区三区| 国产视频视频一区| jvid福利写真一区二区三区| 亚洲精品视频免费观看| 欧美亚洲国产一区在线观看网站 | 国产一区二区三区久久久 | 色哟哟一区二区三区| 日本不卡中文字幕| 久久久精品免费观看| 99视频在线精品| 午夜视频一区在线观看| 久久这里只有精品视频网| 久久精品免费看| 亚洲欧美偷拍卡通变态| 欧美日韩一区二区三区在线| 久久疯狂做爰流白浆xx| 日本一区二区三级电影在线观看 | 精品精品国产高清一毛片一天堂| 97久久精品人人爽人人爽蜜臀| 亚洲精品高清在线观看| 日韩欧美中文字幕精品| 成人黄色一级视频| 日韩国产欧美在线播放| 亚洲国产精品成人久久综合一区| 精品免费日韩av| 色婷婷一区二区三区四区| 美美哒免费高清在线观看视频一区二区| 国产色一区二区| 欧美日韩国产高清一区二区三区| 国产一本一道久久香蕉| 欧美精品一区二区高清在线观看| 一本一道综合狠狠老| 精品一区二区三区影院在线午夜| 亚洲人成在线播放网站岛国| 精品剧情在线观看| 欧美日韩免费观看一区三区| 本田岬高潮一区二区三区| 日韩二区在线观看| 亚洲精品中文在线观看| 欧美日本精品一区二区三区| 久久不见久久见免费视频7| 亚洲影视在线播放| 日韩欧美一级片| 欧美日韩成人综合| 91精品1区2区| 成人app在线| eeuss影院一区二区三区| 九色porny丨国产精品| 全部av―极品视觉盛宴亚洲| 亚洲精品免费在线观看| 国产精品伦理在线| 一区二区三区色| 久久久久久久综合色一本| 7777精品伊人久久久大香线蕉的| 99久久精品国产导航| 成人涩涩免费视频| 免费观看91视频大全| 麻豆视频一区二区| 亚洲r级在线视频| 亚洲1区2区3区视频| 亚洲视频你懂的| 国产亚洲视频系列| 国产日韩精品一区二区浪潮av| 久久久久国色av免费看影院| 久久久久国产成人精品亚洲午夜 | 日韩欧美成人一区| 精品国产凹凸成av人网站| 久久在线免费观看|