关于react事件机制: SyntheticEvent 什么情况下对象可能会被重用
react 官网关于事件池的描述如下
SyntheticEvent 是合并而来。这意味着 SyntheticEvent 对象可能会被重用,而且在事件回调函数被调用后,所有的属性都会无效。出于性能考虑,你不能通过异步访问事件。
SyntheticEvent 对象可能会被重用,有没有大神帮忙说明下什么情况下回出现对象重用
另外,有点不明白这个重用,是什么意思
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
挺好的问题。
先说一个SyntheticEvent的背景吧。React 使用 SyntheticEvent 主要有两个目的:
具体实现见SyntheticEvent
那什么时候会被回收呢?
要研究它怎么被调用的最佳方式是给你的事件处理器打一个断点,例如:
你可以一个一个点开瞧瞧:
再往下瞧瞧:
Ok,我想我应该讲明白了,关于事件这一块,React内部的实现还是很复杂的,有机会再写写文章说一下。
最后, 如果你想在异步场景或者想持久地引用SyntheticEvent对象,建议以下两种方式:
SyntheticEvent#persist()
方法, 告诉React不要释放。 如上面的代码所示:!event.isPersistent()
判断是否是‘持久’的,是就不会释放掉欢迎关注我,和我交流