reactjs - React的SyntheticEvent中的“无效对象”是什么意思?
问题描述
我了解到 React 将 DOM 事件处理程序作为 SyntheticEvent 对象进行管理。另外,我知道这个对象是出于性能原因而被汇集的。这意味着它不能在诸如setTimeout()
or之类的异步上下文中使用setState()
。但是,为什么当我console.log(e)
在事件处理函数中出现警告?Docs 说它是“无效对象”,但我无法理解它的确切含义。我读了这个答案,它说当调用处理程序时对象被删除。然后,我很好奇为什么即使删除了事件对象的属性也可以访问该对象?有没有人可以清楚地解释 SyntheticEvent 中“nullfied object”的含义?感谢您宝贵的时间。
解决方案
使对象无效意味着将其属性的值设置为null。考虑一个例子:
const event = { type: 'click' }
// after nullification
event = { type: null }
因此,如您所见,出于性能原因,对同一对象(事件)的引用一直保持不变,但 for 的值type
已设置为null。
顺便说一句,React v17.0 删除了“事件池”优化。
推荐阅读
- node.js - 如何将导入路由抽象到主 App.js - React、Node.js
- php - 为什么我在这个 PHP OCI8 场景中得到“ORA-22922:不存在的 LOB 值”?
- javascript - react-gtm-module 未发布事件参数
- javascript - 使用 RNPickerSelect 获取我的数组中对象的位置 - React Native
- python - 找到 k 个最大的元素
- docker - Docker 无法删除图像
- performance - Raku 慢速混合排序
- deep-learning - 模型之间的巨大精度差异
- android - 如何将背景图片正确添加到 MaterialCardView
- debugging - 如何修复 NuxtJs 控制台错误