React为什么要用 bind才不丢失this

https://reactjs.org/docs/handling-events.html

class Toggle extends React.Component {
  constructor(props) {
    super(props);
    this.state = {isToggleOn: true};
    // This binding is necessary to make `this` work in the callback
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    // ...
  }
  // ...
}

以下可以直接复制到Chrome控制台运行

var obj = {
  key: 'obj',
  handle: function(){
    console.log(this)
  }
}
obj.handle()  // {key: "obj", handle: ƒ}
handle.bind(obj)()  // obj.handle()

// assign directly
var assignMethod = obj.handle
assignMethod() // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}

// assign used bind
assignMethod = obj.handle.bind(obj)
assignMethod() // {key: "obj", handle: ƒ}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值