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

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

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

      React使用的思考總結

      1、事件處理中的this指針問題

      在 react 中,用 class 聲明一個組件,調用 class 中的方法時,如果該方法中有 this 且沒有手動綁定 this 指針,則會發生 this 指向 undefined 的問題。

      class LoggingButton extends React.Component {
      constructor(props) {
          super(props);
          this.state = {isToggleOn: true}
        }
         handleClick() {
          this.setState(prevState => ({  //報錯,this 指向 undefined,沒有setState方法
            isToggleOn: !prevState.isToggleOn
          }));
        }
      
        render() {
          return (
            <button onClick={this.handleClick}>
              Click me
            </button>
          );
        }
      }

      1.1、如何手動綁定方法中的 this 指針

      1.1.1、在構造函數中用 bind 綁定 this

      constructor(props) {
          //下面手動綁定了handleClick方法的this指針
          this.handleClick = this.handleClick.bind(this);
      }

      1.1.2、在調用時用 bind 綁定 this

      class Test extends React.Component {
          constructor (props) {
              super(props)
              this.state = {message: 'Allo!'}
          }
      
          handleClick (name, e) {
              console.log(this.state.message + name)
          }
      
          render () {
              return (
                  <div>
                      //下面在調用時綁定了this指針,并進行了傳參   
                      <button onClick={ this.handleClick.bind(this, '趙四') }>Say Hello</button>
                  </div>
              )
          }
      }

      1.1.3、用箭頭函數聲明函數

      class Home extends React.Component {
        constructor(props) {
          super(props);
          this.state = { isToggleOn: true };
        }
      
        //用箭頭函數聲明可以綁定this
        handleClick = () => {
          this.setState(prevState => ({
            isToggleOn: !prevState.isToggleOn
          }));
        }
      
        render() {
          return (
            <button onClick={this.handleClick}>
              {this.state.isToggleOn ? 'ON' : 'OFF'}
            </button>
          );
        }
      }

      1.1.4、用箭頭函數調用class中的函數

      render() {
          return (
           //用箭頭函數來調用
            <button onClick={(e) => {this.handleClick(params, e)} }>
              {this.state.isToggleOn ? 'ON' : 'OFF'}
            </button>
          );
      }

      使用這個語法有個問題就是每次在組件渲染的時候都會創建一個不同的回調函數,如果這個回調函數作為一個屬性值傳入其它組件,這些組件可能會進行額外的重新渲染。我們通常建議在構造函數中綁定或使用箭頭函數聲明函數的方式來避免這類性能問題。

      1.1.5、使用React.createClass

      React 15及以下的版本可以React.createClass函數來創建一個組件。你在里面創建的所有函數的this將會自動綁定到組件上。

      const App = React.createClass({
       handleClick() {
        console.log('this', this); // this 指向App組件本身
       },
       render() {
        return (
         <div onClick={this.handleClick}>test</div>
        );
       }
      });

      但是需要注意隨著React 16版本的發布官方已經將改方法從React中移除

       

      1.2、為什么要手動綁定 this

      還是有點模糊,給出一些參考鏈接

      參考:http://www.fly63.com/article/detial/1013、http://www.rzrgm.cn/dashnowords/p/9343383.html

       

      posted @ 2019-08-19 17:06  wenxuehai  閱讀(278)  評論(0)    收藏  舉報
      //右下角添加目錄
      主站蜘蛛池模板: 九九热爱视频精品| 精品91在线| 成人亚欧欧美激情在线观看| 精品少妇爆乳无码aⅴ区| 色爱综合另类图片av| 视频一区视频二区亚洲视频| 人妻少妇偷人无码视频| 亚洲乱码中文字幕久久孕妇黑人| 成av人电影在线观看| 五月综合激情婷婷六月| 欧美国产成人精品二区芒果视频 | www射我里面在线观看| 国产成人午夜福利精品| 在线观看中文字幕国产码| 91人妻熟妇在线视频| 18禁动漫一区二区三区| 高中女无套中出17p| 婷婷五月综合丁香在线| 国产精品日韩av在线播放| 日本中文字幕久久网站| 国产精品麻豆中文字幕| 国产呦交精品免费视频| 成人免费精品网站在线观看影片 | 国产精品永久免费成人av| 国产AV无码专区亚洲AV漫画| 久热re这里精品视频在线6| 国产精品一区二区三区四区| 国产免费AV片在线看| 亚洲老熟女一区二区三区 | 97成人碰碰久久人人超级碰oo| www内射国产在线观看| 四虎国产精品成人免费久久| 呦系列视频一区二区三区| 国内在线视频一区二区三区| 中文字幕在线不卡一区二区| 宜宾县| 亚洲 自拍 另类小说综合图区 | 欧美 亚洲 中文 国产 综合| 国产精品天天看天天狠| 亚洲AV成人片不卡无码| 新晃|