首頁 > web前端 > js教程 > 主體

react事件綁定this的幾種方式

php中世界最好的语言
發布: 2018-03-17 09:47:33
原創
1850 人瀏覽過

這次帶給大家react事件綁定this的幾種方式,react事件綁定this的注意事項有哪些,下面就是實戰案例,一起來看一下。

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

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

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

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

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

如下實例:

<a href="#" onclick="console.log(&#39;The link was clicked.&#39;); return false">
Click me
</a>
class ActionLink extends React.Component {
constructor(props) {
super(props);
}
handleClick(e) {
e.preventDefault();
console.log('The link was clicked.');
}
render() {
return (
<a href="#" onClick={this.handleClick.bind(this)}>Click Me...</a>
);
}
}
登入後複製

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

以下是幾個綁定的方法:

bind方法

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

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

建構子內綁定

在建構函式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('del')
 }
 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('del')
 }
 render() {
  return (
   <p className="home">
    <span onClick={this.del}></span>
   </p>
  );
 }
}
登入後複製

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

JS產生二維碼

#JS實作微訊號隨機切換

String.prototype.format如何使用字串拼接


#

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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板