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

问题:

答:这是因为React里面的事件并不是真实的DOM事件,而是自己在原生DOM事件上封装的合成事件。

合成事件是由事件池来管理的,合成事件对象可能会被重用,合成事件的所有属性也会随之被清空。所以当在异步处理程序(如setTimeout等等)中或者浏览器控制台中去访问合成事件的属性,有可能就是空的。

上面的答案中给出的方案:event.persist(),其实就是将当前的合成事件从事件池中移除了,所以能够继续保有对该事件的引用以及仍然能访问该事件的属性。

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