heiheiLL
新手
新手
  • 最后登录2020-07-03
  • 发帖数5
阅读:128回复:0

[react]解决react项目中event对象打印的值为null

楼主#
更多 发布于:2020-06-28 15:45
在做react项目的时候,发现event打印到控制台上的属性值均为null,如下图所示:
 

描述:事件对象获取不到值

图片:QM]4YNO9WUNDJ_A38_DTY_Q.png

事件对象获取不到值


觉得挺奇怪的,怎么可能是null呢,但是在方法里面竟然又能获取到值,这样对调试很不利,有木有?


       其实真正的原因是因为React里面的事件并不是真实的DOM事件,而是自己在原生DOM事件上进行了封装与合成。
合成事件是由事件池来管理的,合成事件对象可能会被重用,合成事件的所有属性也会随之被清空。所以当在异步处理程序(如setTimeout等等)中或者浏览器控制台中去访问合成事件的属性,默认react 会把其属性全部设为null。
       如果就想在控制台输出打印结果怎么办?有没有解决方案呢?答案当然是有的!可以在console.log()前面添加event.persist()或者e..persist(),其实就是将当前的合成事件从事件池中移除了,所以能够继续保有对该事件的引用以及仍然能访问该事件的属性。
getEvent(e) {
       e.persist()
       console.log(e)
   }


描述:事件对象获取值

图片:H[A8%O16AZCRQBRWYGF(`XA.png

事件对象获取值
游客


返回顶部

公众号

公众号