首頁  >  文章  >  web前端  >  詳解react關於事件綁定this的四種方式_javascript技巧

詳解react關於事件綁定this的四種方式_javascript技巧

小云云
小云云原創
2018-03-12 09:15:221711瀏覽

在react元件中,每個方法的上下文都會指向該元件的實例,即自動綁定this為當前元件,而且react還會對這種參考進行緩存,以達到cpu和記憶體的最大化。在使用了es6 class或純函數時,這種自動綁定就不存在了,我們需要手動實現this的綁定。

React事件綁定類似於DOM事件綁定,區別如下:

1.React事件的用駝峰法命名,DOM事件事件命名是小寫

2.透過jsx,傳遞一個函數作為event handler,而不是一個字串。

3.React事件不能透過傳回false來阻止預設事件,需要明確呼叫preventDefault()

如下實例:

4b9fb64e28bfa25ce78ce203c03210ee
Click me
5db79b134e9f6b82c0b36e0489ee08ed
class ActionLink extends React.Component {
constructor(props) {
super(props);
}
handleClick(e) {
e.preventDefault();
console.log('The link was clicked.');
}
render() {
return (
ce9b621fb6ec54951e7c0b38768a414bClick Me...5db79b134e9f6b82c0b36e0489ee08ed
);
}
}

ps:React元件類別的方法沒有預設綁定this到元件實例,需要手動綁定。

以下是幾個綁定的方法:

bind方法

#直接綁定是bind(this)來綁定,但是這樣帶來的問題是每一次渲染是都會重新綁定一次bind;

class Home extends React.Component {
 constructor(props) {
  super(props);
  this.state = {
  };
 }
 del(){
  console.log('del')
 }
 render() {
  return (
   09d51344e61201747f3f0f261639e806
    c157f1b0f1442cd3850bd9da57d4d18e54bdf357c58b8a65c66d7c19c8e4d114
   94b3e26ee717c64999d7867364b1b4a3
  );
 }
}

構造函數內綁定

在建構函式constructor 內綁定this,好處是只需要綁定一次,避免每次渲染時都要重新綁定,函數在別處複用時也無需再次綁定

class Home extends React.Component {
 constructor(props) {
  super(props);
  this.state = {
  };
  this.del=this.del.bind(this)
 }
 del(){
  console.log('del')
 }
 render() {
  return (
   <p className="home">
    <span onClick={this.del}></span>
   </p>
  );
 }
}

::不能傳參參

如果不傳參數使用雙冒號也是可以

class Home extends React.Component {
 constructor(props) {
  super(props);
  this.state = {
  };
 }
 del(){
  console.log(&#39;del&#39;)
 }
 render() {
  return (
   <p className="home">
    <span onClick={::this.del}></span>
   </p>
  );
 }
}

箭頭函式綁定

箭頭函數不僅是函數的'語法糖',它還自動綁定了定義此函數作用域的this,因為我們不需要再對它們進行bind方法:

class Home extends React.Component {
 constructor(props) {
  super(props);
  this.state = {
  };
 }
 del=()=>{
  console.log(&#39;del&#39;)
 }
 render() {
  return (
   <p className="home">
    <span onClick={this.del}></span>
   </p>
  );
 }
}

相關推薦:

php的this和self簡單介紹

#四種JS中this取值模式

#html的標籤中的this應該如何使用

#

以上是詳解react關於事件綁定this的四種方式_javascript技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn