<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Reactjs事件處理的三種寫法

      前言

      Reactjs中事件處理,與DOM元素處理類似,但也有一些不同的語法。

      1. React 事件名稱使用駝峰命名,而不是全小寫命名。
      2. 使用JSX,可以將函數作為事件處理程序傳遞,而不是字符串。

      es6的class語法規定,類的方法內部,如果含有this,它默認指向類的實例。但是,單獨使用該方法,可能報錯,this指向不明確。
      為了解決這個問題,react提出了3中解決方法。

      1. 在回調函數中使用箭頭函數

      在onClick的時候,使用箭頭函數。這個語法確保this 綁定在handleClick中。
      優勢:很容易讓人看懂。
      缺點:
      在每次render時候,都會產生一個匿名函數。如果此組件作為一個子組件,那么父組件render的時候,子組件也可能會重新渲染,消耗性能。
      在線預覽

      class ToggleBtn extends React.Component {
        constructor() {
          super()
          this.state = {
            isToggleOn: true
          }
        }
        handleClick(e) {
          this.setState({
            isToggleOn: !this.state.isToggleOn
          })
        }
        render() {
          return (
            <div>
              <button onClick={(e) => this.handleClick(e)}>{this.state.isToggleOn ? 'ON' : 'OFF'}</button>
            </div>
          )
        }
      }
      
      

      2. 在構造器中綁定this

      優勢:通用。
      缺點:繁瑣,每次都得手動綁定this。
      在線預覽

      class ToggleBtn extends React.Component {
        constructor() {
          super()
          this.state = {
            isToggleOn: true
          }
          // 這個bind方法是必須的,以確保`this`可以在回調函數handleClick中使用
          this.handleClick = this.handleClick.bind(this)
        }  
        handleClick(e) {
          this.setState({
            isToggleOn: !this.state.isToggleOn
          })
        }
        render() {
          return (
            <div>
              <button onClick={this.handleClick}>weiqinl-{this.state.isToggleOn ? 'ON' : 'OFF'}</button>
            </div>
          )
        }
      }
      

      3. 使用類字段語法

      優點:簡單方便。
      缺點:
      ES7功能。實驗性屬性,可能不兼容,需要babel處理。
      在線預覽

      class ToggleBtn extends React.Component {
        constructor() {
          super()
          this.state = {
            isToggleOn: true
          }
        }
        // 這個語法確保`this` 綁定在handleClick中
          handleClick = (e) => {
          this.setState({
            isToggleOn: !this.state.isToggleOn
          })
        }
        render() {
          return (
            <div>
              <button onClick={this.handleClick}>weiqinl-{this.state.isToggleOn ? 'ON' : 'OFF'}</button>
            </div>
          )
        }
      }
      

      事件參數的傳遞。

      使用箭頭函數和方法原型屬性的bind方法,兩種方式傳遞參數的寫法。

      1. 使用e代表React event,
      2. 在箭頭函數中,默認是作為第二個參數的。
      3. 在bind方法時候,是自動作為它的參數可以使用的。
      <button onClick={(e) => this.deleteRow(id, e) }>Delete Row</button>
      <button onClick={this.deleteRow.bind(this, id)}>Delete Row</button>
      

      總結

      這幾種方式,與類中this的綁定問題,解決方式類似。
      盡量使用方法2和方法3。方法1如果將事件傳遞給子組件,可能會有重新渲染的耗能問題。

      posted @ 2019-04-30 22:48  weiqinl  閱讀(2712)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 偷拍专区一区二区三区| 久久se精品一区精品二区 | 久久99精品国产麻豆婷婷| 特级aaaaaaaaa毛片免费视频| 亚洲av成人无码天堂| 色呦呦九九七七国产精品| 亚洲精品天堂一区二区| 亚洲日本欧洲二区精品| 国产美女高潮流白浆视频| 国产欧美精品一区aⅴ影院| 亚洲A综合一区二区三区| 无码丰满人妻熟妇区| 国产精品成人午夜福利| 中文无码热在线视频| 91精品国产老熟女在线| 精品蜜臀国产av一区二区| 五月天国产成人av免费观看| 久久国产成人精品国产成人亚洲| 无码一区中文字幕| 特级做a爰片毛片免费看无码| 国产乱人伦av在线无码 | 精品久久久久中文字幕APP| 国产在线精品一区二区三区不卡| 性色欲情网站iwww| 国内揄拍国内精品对久久| 亚洲国产精品久久久久婷婷图片| 久久99热成人精品国产| 天祝| 国产黄色一区二区三区四区| 国产另类ts人妖一区二区| 成人3D动漫一区二区三区| 亚洲欧美自偷自拍视频图片| 人妻中文字幕亚洲一区| 极品无码国模国产在线观看| 国产成人亚洲综合色婷婷秒播| 久久理论片午夜琪琪电影网| 久久国产精品精品国产色婷婷| 国产亚洲精品福利在线无卡一| 77777亚洲午夜久久多人| 日韩乱码视频一区二区三区| 日韩精品亚洲专在线电影|