首页 > 解决方案 > React的SyntheticEvent中的“无效对象”是什么意思?

问题描述

我了解到 React 将 DOM 事件处理程序作为 SyntheticEvent 对象进行管理。另外,我知道这个对象是出于性能原因而被汇集的。这意味着它不能在诸如setTimeout()or之类的异步上下文中使用setState()。但是,为什么当我console.log(e)在事件处理函数中出现警告?Docs 说它是“无效对象”,但我无法理解它的确切含义。我读了这个答案,它说当调用处理程序时对象被删除。然后,我很好奇为什么即使删除了事件对象的属性也可以访问该对象?有没有人可以清楚地解释 SyntheticEvent 中“nullfied object”的含义?感谢您宝贵的时间。

标签: reactjsdom-events

解决方案


使对象无效意味着将其属性的值设置为null。考虑一个例子:

const event = { type: 'click' }

// after nullification 
event = { type: null }

因此,如您所见,出于性能原因,对同一对象(事件)的引用一直保持不变,但 for 的值type已设置为null

顺便说一句,React v17.0 删除了“事件池”优化。


推荐阅读