前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React 手动实现 this 的绑定的几种方法

React 手动实现 this 的绑定的几种方法

作者头像
IT架构圈
发布2018-06-01 11:29:48
3940
发布2018-06-01 11:29:48
举报
文章被收录于专栏:IT架构圈IT架构圈

一 :bind 方法。

在{}中,这个方法可以帮助我们绑定事件处理器内的 this ,并可以向事件处理器中传递参数

代码语言:javascript
复制
class Hello extends React.Component {
        //最后一个参数是事件对象
    handleClick(param1,param2,event){
    alert(param1+":"+param2 + ":"+event);
  }
  render() {
            //通过bind(),可以传递单个或多个参数
    return <div onClick = {this.handleClick.bind(this,'test','test2')}>
              Hello {this.props.name} 
          </div>;
  }
}

二 : 如果方法只绑定,不传参,可以使用双冒号语法,

代码语言:javascript
复制
class Hello extends React.Component {
    handleClick(event){
    alert(event);
  }
  render() {
        //类似于{this.xxx.bind(this)}
    return <div onClick = {::this.handleClick}>
              Hello {this.props.name} 
          </div>;
  }
}

三 :constructor构造器内声明,

在组件的构造器内完成了 this 的绑定,这种绑定方式的好处在于仅需要进行一次绑定,而不需要每次调用事件监听器时去执行绑定操作

代码语言:javascript
复制
class Hello extends React.Component {
    constructor(arg){
    super(arg);
        //参数传递跟一类似
        this.handleClick = this.handleClick.bind(this,'test');
  }
    handleClick(arg,e){
    alert(arg+":"+e);
  }
  render() {
    return <div onClick = {this.handleClick}>
              Hello {this.props.name} 
          </div>;
  }
}

五 : 使用箭头函数的特性: 自动绑定了定义此函数作用域的 this

代码语言:javascript
复制
class Hello extends React.Component {
    constructor(arg){
    super(arg);
  }
    handleClick(arg,e){
    alert(arg+":"+e);
  }
  render() {
        //e为事件对象
    return <div onClick = {(e)=>{this.handleClick('test',e)}}>
              Hello {this.props.name} 
          </div>;
  }
}

或者:

代码语言:javascript
复制
class Hello extends React.Component {
    constructor(arg){
    super(arg);
  }
    handleClick = (e)=>{
    alert(e)
  }
  render() {
    return <div onClick = {this.handleClick}>
              Hello {this.props.name} 
          </div>;
  }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程坑太多 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档