在react中使用event(事件对象),如何使用,注意事项和react中如何定义和使用函数?

20 篇文章 0 订阅
17 篇文章 1 订阅

先罗列一下在react中如何定义和使用函数?

定义function类型

 fn() {
    console.log(this)
  }

使用function类型

  render() {
    return (
      <div>
          <Button onClick={this.fn}>请点击</Button>
      </div>)
    }
会引发什么样子的问题呢?

this指向的问题
接下来当页面加载完毕的时候我打印一次this和点击以后的this做一次对比

在这里插入图片描述
页面初始化完毕以后this的参数
在这里插入图片描述

fn函数内部的this(这里的this指向的就是函数自己)
在这里插入图片描述

如何解决function函数的this指向的问题呢?

callaplaybind这里就不一一列举了,最常用的就是bind

bind: 方法会创建一个新的函数,当被调用的时候,将其this关键字设置为提供的值,我们必须手动去调用

 <Button onClick={this.fn.bind(this)}>请点击</Button>

看看效果吧 !
这里的代码没有改变
在这里插入图片描述
使用bind以后的结果:
在这里插入图片描述

箭头函数类型的定义和使用

定义
在这里插入图片描述
使用方式和function一样的区别在于箭头函数没有自己的this指向,只会向上继承父级的this指向,如果父级没有this指向还会继续向上检索
在这里插入图片描述
在这里插入图片描述
执行后的效果
在这里插入图片描述
在这里插入图片描述

如何进行事件传参呢?

1.使用bind,call,aplay
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
2.使用箭头函数的方式传参
在这里插入图片描述在这里插入图片描述

重点来了,如何使用事件对象event?

不传参的情况下

不传参的情况下默认值就是event
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

如果我需要传参还需要获取事件对象event呢?
1.使用bind,call,aplay

在这里插入图片描述

<Button onClick={this.fn.bind(this, '我是传递进去的参数')}>请点击</Button>

在这里插入图片描述
结果
在这里插入图片描述
这是为什么呢?
当你使用bind,call,aplay着三个函数的时候,默认他最后一位的参数就是event事件对象
如果我传递三个参数呢?
在这里插入图片描述

第二个参数是没有值的
在这里插入图片描述
就会发现最后一个怎么没有值呢?
通过推算的出来的结果是赋值的event的公式应该是
传递进去参数的长度 + 1 = 就是event事件对象最后所在的位置

2.使用箭头函数(使用较多)

在这里插入图片描述

 <Button onClick={(e) => this.fn(e,'我是传递进去的参数')}>请点击</Button>

在这里插入图片描述
在这里插入图片描述

这里的运行机制就相当于,我先拿到事件对象赋值给原先的函数,因为函数如果不传参的情况下,默认值,就是事件对象。
()=>这种写法相当于直接返回结果

函数使用和传参的注意事项

这种写法是万万不可的!!!
在这里插入图片描述
像这种方法就相当于这个button按钮好了以后就加载这个函数
render树刷新一次,这个事件都会执行一次,会增加计算机的负担。
在这里插入图片描述

    <Button onClick={this.fn('e', '我是传递进去的参数')}>请点击</Button>

万万不能这样写!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值