React学习一 事件绑定

React事件绑定实质

传入的事件是一个默认调用 所用要注意this指向

 const obj = {
      name: "obj",
      foo: function() {
        console.log("foo:", this)
      }
    }

    // obj.foo()

    const config = {
      onClick: obj.foo.bind(obj)
    }

    const click = config.onClick
    click()

扩展:常见的this指向:

        1.默认绑定 独立执行 foo()
        2.隐式绑定 被一个对象执行 obj.foo() -> obj
        3.显式绑定: call/apply/bind foo.call("aaa") -> String("aaa")
        4.new绑定: new Foo() -> 创建一个新对象, 并且赋值给this

应对策略:

            {/* 1.this绑定方式一: bind绑定 */}
            类组件 constructor中的代码
            this.btn1Click = this.btn1Click.bind(this)
            <button onClick={this.btn1Click}>按钮1</button>
            
            {/* 2.this绑定方式二: ES6 class fields */}
            btn2Click = () => {
                 console.log("btn2Click", this)
                this.setState({ counter: 1000 })
             }
            <button onClick={this.btn2Click}>按钮2</button>


            {/* 3.this绑定方式三: 直接传入一个箭头函数(重要) */}
            <button onClick={() => console.log("btn3Click")}>按钮3</button>
            <button onClick={() => this.btn3Click()}>按钮3</button>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值