React事件系统
React 合成事件
React 事件系统的大致原理分为三步
1.在 createRoot 的时候挂载所有支持的原生事件 (React 18.1.0 中 react-dom/src/ReactDOMRoot.js 文件中 createRoot 函数,执行完 createContainer 之后执行 listenToAllSupportedEvents,原理就是监听挂载容器上所有原生事件,原生事件触发后 dispatch 对应的事件)
2.dispatch 过程
-
通过参数把事件 e 传递进来,触发事件的真实 DOM 就是 e.target,然后收集 e.target 到 container 之间的 捕获和冒泡事件
-
构造一个合成事件,里面有一个是否阻止冒泡的属性,阻止冒泡方法就直接调用原生的
-
捕获事件数组挨个执行
-
冒泡事件数组挨个执行
这里要注意事件执行顺序:先执行捕获事件,再执行冒泡事件,捕获从外层往内层执行,冒泡从内层往外层
3.在 mount 和 update 过程中添加和更新保存事件回调函数的属性,在 DOM 的一个属性上保存所有回调函数比如 onClick onClickCapture
有个坑
在 Chrome 上 console.log 输出 e.target 和 e.currentTarget 都有结果,但是直接 console.log(e) 打印结果里面 e 的 currentTarget 值显示 null
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgikeea
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13