spinbox 上下箭头事件_[React] 3 - 自动绑定 (事件绑定)

ccacf4b6df8aa8fe9203862736741ed6.png

1. 自动绑定 (事件绑定)

绑定this: React为什么要这么做?

  • 是js中this绑定方式决定的,和react工作方式无关。
  • 函数处理, 是作为回调传递的,这样就会丢失了上下文, 所以this为 undefined
  • this不是默认指向在全局的吗? 在严格模式下Strict mode, 就是个undefined, 不严格模式为全局
// 三种方式
// 1. 构造器绑定
constructor (props) {
    super(props)
    this.handleClick3 = this.handleClick3.bind(this)
  }

// 2. 箭头函数
<button onClick={() => this.handleClick2()}>

// 3. bind方式
<button onClick={this.handleClick4.bind(this)}>

2. 为什么要绑定this?

LIN.JY666:[JS基础] 7 - this, call/apply/bind/箭头函数​zhuanlan.zhihu.com
c9c24ec39ec7027ff5eed661a5e777a5.png
  • 如果是个函数调用,那么this指向函数内部,如果是非严格模式,那么this指向window
  • 如果是个对象里的函数调用,那么this指向该对象
  • this要等到执行的时候,才确定是什么。

为了绑定当前执行的环境, 当前执行的作用域

const object = {
    name: '123',
    fn: function () {
        // 隐式绑定
        console.log('this.name', this.name)
    }
}
const name = 'test'

// 1. ?
object.fn() // 返回'123' 对象里的函数调用, this指向该对象

// 2. ?
objFn = object.fn 
objFn() // 返回 test 函数调用,那么this指向函数内部,如果是非严格模式,那么this指向window

// 3. 绑定, object.fn的this 使用object内部
objFnn = object.fn.bind(object)
objFnn() // '123'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值