iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0

這段比起學React,更像是在複習JS和瀏覽器的互動呢。
事件屬性除了等下會介紹的e.eventPhase,還有熟悉的e.preventDefault以及能自動觸發事件的e.dispatchEvent等。可以多多了解。

Takeaway

  • 事件處理函數:以handle開頭接事件名,在組件裡定義;或在JSX裡用箭頭
  • 前者的JSX會寫<button onClick={事件處理函數}>,並搭配外面定義的事件;後者會寫<button onClick={() => 發生什麼}>
  • 事件處理函數作為props:以on開頭,如onHover
  • 如果從父組件收到onProps,在JSX裡寫onProps()
  • HTML裡收到的props仍須是預設,如{onClick}。但組件裡傳的可以自己命名
  • 事件傳遞:由外而內稱Capture,由內而外稱Bubbling
  • Target Phase:此時不區分捕獲和冒泡
  • 傳遞方向為捕獲 → 目標 → 冒泡
  • 有寫到「事件物件」(那個e)就會多一層{ }
  • e.eventPhase:回傳目前階段,以整數值1、2、3代表
  • e.stopPropagation():通常阻止事件冒泡
  • Event Delegation:事件委派。讓父元素代理監聽,不用特別阻止事件傳遞
  • e.target跟隨使用者觸發的元素而變,e.currentTarget始終跟隨監聽對象
  • 前者在「傳遞過程」中不變,後者有可能變化
  • e.currentTarget:在一般函式裡等同於this
  • 在箭頭函式中,this代表的對象不會改變,和e.currentTarget不同

上一篇
【Day5】Pure Functions & UI Tree
下一篇
【Day7】State1
系列文
【現在學React還來得及嗎?】30天Takeaway分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言