码迷,mamicode.com
首页 > 其他好文 > 详细

React 绑定事件的几种写法bind(this)

时间:2021-06-03 18:04:10      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:eth   undefined   str   err   extend   efi   highlight   ref   render   

1. 我们在 React class Component 绑定事件时,经常会通过 bind(this) 来绑定事件  

class Home extends React.Component{
  constructor( props ){
    super( props );
  }
  handleClick(event){
    // todo something
  }
  render(){
    return (
      <button type="button" onClick={this.handleClick.bind(this)}>
        Click Me
      </button>
    );
  }
}
或者在构造函数内绑定的写法
class Home extends React.Component{
  constructor( props ){
    super( props );
   this.handleClick = this.handleClick.bind(this) } handleClick(event){ // todo something } render(){ return ( <button type="button" onClick={this.handleClick}> Click Me </button> ); } }

  如果不用bind绑定,this的值为undefined。 因为当button被点击时,会由React作为中介调用回调函数,此时的this指向丢失,就指向了window。

  bind this 的原理:

    new 关键字, 在使用new 关键字时,构造函数(即class)中的this都会强制赋值为新的对象。使用bind将this的值绑定在函数中

 

  不用bind绑定的方法: 

    最常用的 public class fields  

    因为我们使用 public class fields 语法,handleClick 箭头函数会自动将 this 绑定在 Home 这个class

class Home extends React.Component{
  constructor( props ){
    super( props );
  }
  handleClick = () => {
    // todo something
  }
  render(){
    return (
      <button type="button" onClick={this.handleClick}>
        Click Me
      </button>
    );
  }
}    

    箭头函数

     在ES6中,箭头函数 this 默认指向函数的宿主对象(或者函数所绑定的对象)

class Home extends React.Component{
  constructor( props ){
    super( props );
  }
  handleClick(params){
    // todo something
  }
  render(){
    return (
      <button type="button" onClick={ () => {this.handleClick(params)}>
        Click Me
      </button>
    );
  }
}

 

  

 

React 绑定事件的几种写法bind(this)

标签:eth   undefined   str   err   extend   efi   highlight   ref   render   

原文地址:https://www.cnblogs.com/qianxiaoniantianxin/p/14844473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!