React合成实事件中,事件参数 event 属性值为 null

本篇文章参考以下博文

前言

  最近在做一个右键功能的时候,界面使用到事件参数 event.button ,取值的时候先用 console 打印了一下,结果打印结果每一项都是 null ,但是确实又取到具体数值。感觉很有意思,在这里记录一下,当做一个冷知识。

解决方法

  先说一下解决方法,可以在 console.log() 前面添加 event.persist() 或者 e.persist()

原理

  解释一下原理,主要是 React on 开头的事件都是合成事件,不是真实的,在原生的 DOM 上进行了封装,封装好之后交给事件池进行管理,合成事件对象可能会被重用,合成事件的所有属性也会随之被清空。所以当在异步处理程序(如 setTimeout 等等)中或者浏览器控制台中去访问合成事件的属性,默认 react 会把其属性全部设为 null

  如果在 react 中想异步访问事件属性(如在 setTimeout 内),应该在是处理事件时调用 event.persist() ,这会从事件池中移除该合成函数并允许对该合成事件的引用被保留下来。

  如果想了解 React 中原生事件和合成事件的区别,请跳转下面博文。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值