react中的事件对象event中target在控制台查看为null,但是event.target却能获取到目标元素,为什么?

代码:
图片描述

选中input后,结果是这样的:

图片描述

为什么event.target一个为null,下面的确定正确获取呢

阅读 8.9k
3 个回答

这是因为React里面的事件并不是真实的DOM事件,而是自己在原生DOM事件上封装的合成事件。
合成事件是由事件池来管理的,合成事件对象可能会被重用,合成事件的所有属性也会随之被清空。所以当在异步处理程序(如setTimeout等等)中或者浏览器控制台中去访问合成事件的属性,有可能就是空的。
上面的答案中给出的方案:event.persist(),其实就是将当前的合成事件从事件池中移除了,所以能够继续保有对该事件的引用以及仍然能访问该事件的属性。

event 只是当前对象
默认react 会把其属性全部设为null

新手上路,请多包涵
function(e){
          e.persist()
          console.log(e);
        }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题