当前位置: 首页 > news >正文

济南 外贸网站建设网站建设企业哪里好

济南 外贸网站建设,网站建设企业哪里好,怎么查看网站死链,wordpress笔记本主题一、核心差异对比表 维度原生事件React 事件绑定语法HTML 属性#xff08;onclick#xff09;或 DOM API#xff08;addEventListener#xff09;JSX 中使用驼峰式属性#xff08;onClick#xff09;绑定位置直接绑定到具体 DOM 元素统一委托到根节点#xff08;React …一、核心差异对比表 维度原生事件React 事件绑定语法HTML 属性onclick或 DOM APIaddEventListenerJSX 中使用驼峰式属性onClick绑定位置直接绑定到具体 DOM 元素统一委托到根节点React 17 及以前到 documentReact 18 到容器事件对象原生 Event 对象不同浏览器实现有差异合成事件 SyntheticEvent封装原生事件并抹平浏览器差异传播机制完整的捕获 → 目标 → 冒泡 三阶段表面只有冒泡捕获需显式声明如 onClickCaptureReact 18 支持完整阶段阻止传播event.stopPropagation() 阻止整个 DOM 树的传播仅阻止合成事件传播不影响原生事件默认行为event.preventDefault() 或 HTML 中返回 false只能使用 event.preventDefault()this 指向默认指向 DOM 元素可通过 bind、箭头函数修改默认 undefined需手动绑定构造函数、箭头函数或类属性触发顺序按 DOM 树层级依次触发原生事件总是先触发合成事件在冒泡到根节点后触发性能优化大量绑定时可能导致内存开销大事件委托 事件池复用事件对象减少监听器数量和内存占用兼容性需处理浏览器差异如 IE 的 attachEvent统一 API自动处理兼容性 二、关键机制详解 1. 事件委托机制 原生事件 每个元素需单独绑定监听器大量元素时性能较差 // 手动为每个按钮绑定事件 document.querySelectorAll(button).forEach(btn {btn.addEventListener(click, handleClick); });React 事件 所有事件统一委托到根节点通过事件类型和目标元素匹配处理函数。 // 所有按钮的点击事件最终由根节点的统一处理器分发 button onClick{handleClick}Click/button2. 合成事件 SyntheticEvent 跨浏览器封装 React 将不同浏览器的原生事件封装为统一接口例如 function handleClick(e) {e.preventDefault(); // 兼容所有浏览器的阻止默认行为console.log(e.target); // 标准化的目标元素 }事件池优化 React 复用事件对象以减少 GC 压力React 17 及以前 function handleClick(e) {setTimeout(() {console.log(e.target); // React 17 及以前此处会失效因事件对象已被重置}, 0); }3. 事件传播差异 原生事件 预览 div onclickconsole.log(原生冒泡)button onclickconsole.log(原生目标)Click/button /div传播顺序button → div冒泡阶段。 React 事件 div onClickCapture{() console.log(React 捕获)}button onClick{() console.log(React 冒泡)}Click/button /divReact 18 传播顺序div捕获 → button目标 → div冒泡。 4. 触发顺序细节 当同时存在原生和合成事件时 div onClick{() console.log(合成事件)} onMouseDown{() console.log(合成 mousedown)} button onclickconsole.log(原生 click) onmousedownconsole.log(原生 mousedown)Click/button /div点击按钮的触发顺序 原生 mousedown → 原生 click → 合成 onMouseDown → 合成 onClick。 三、特殊场景对比 1. 混合使用原生与合成事件 class App extends React.Component {componentDidMount() {// 手动绑定原生事件this.buttonRef.current.addEventListener(click, () {console.log(原生事件);});}render() {return (button ref{this.buttonRef} onClick{() console.log(合成事件)}Click/button);} }原生事件先触发合成事件后触发。原生事件的 stopPropagation() 会阻止合成事件触发。 2. 事件池与异步访问 React 17 及以前复用事件对象异步访问需提前保存属性 function handleClick(e) {const target e.target; // 必须提前保存setTimeout(() {console.log(target); // 正确访问console.log(e.target); // React 17 及以前会失效}, 0); }React 18 移除了事件池可直接异步访问。 四、总结 特性原生事件React 事件优势直接控制 DOM适合复杂交互场景跨浏览器一致性性能优化代码简洁劣势兼容性差大量绑定时性能问题抽象层级高特殊场景需结合原生事件适用场景自定义滚动、拖拽等复杂 DOM 操作组件内交互、表单处理等常规场景
http://www.pierceye.com/news/914430/

相关文章:

  • 网站优化新闻关键词挖掘工具爱网
  • 研究生院 网站 建设广州网站建设策划
  • 企业建站找哪个公司网站退出率
  • 汕头企业建站系统高密微网站建设
  • 企业建设网站个人总结报告中山蓝图科技网站建设
  • 网站规划作品邯郸免费发布信息平台
  • html5手机网站源码网站备案要如何取消
  • 商城建设网站制作微信网站模板源码
  • 品牌型网站制作公司想做百度推广找谁
  • 浙江建设监理协会官方网站网站建设的公司选择哪家好
  • 优秀网站及网址沙漠风网站建设6
  • 做数据表格的网站出口网站建设方案
  • 广州网站建设信息科技有限公司福建省亿力电力建设有限公司网站
  • 电子商务网站开发 ppt湛江做网站报价
  • 网站建设框架图wordpress 固定链接设置
  • 内蒙古工程建设协会网站seo文章外包
  • 网站建设免费的服务器商丘推广公司
  • 网站设计大概价格设计网络平台的公司
  • phpcms中的网站介绍页中文去掉wordpress
  • 网站的建设心得怎么做网站淘宝转换工具
  • 做网站1天转多钱wordpress 分享插件
  • 淘宝网站建设单子好接吗朝阳区办公
  • html5网站建设平台怎么给网站添加图标
  • 中文域名网站网站制作wap页面
  • wordpress站内全文检索一个人完成网站建设
  • wordpress自定义重用结构北京seo怎么优化
  • 苏州做网站专业的公司vs2008怎么做网站
  • 效果好的徐州网站建设休闲食品网站建设策划书
  • 如何发布自己的网站wordpress 4.9.6 下载
  • 织梦网站打开慢企业咨询师资格证