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

加强三农网站建设的意义方法网站目录

加强三农网站建设的意义,方法网站目录,pdf插件 wordpress,网站文件夹目录结构一、核心差异对比表 维度原生事件React 事件绑定语法HTML 属性(onclick)或 DOM API(addEventListener)JSX 中使用驼峰式属性(onClick)绑定位置直接绑定到具体 DOM 元素统一委托到根节点(React …

一、核心差异对比表

维度原生事件React 事件
绑定语法HTML 属性(onclick)或 DOM API(addEventListenerJSX 中使用驼峰式属性(onClick
绑定位置直接绑定到具体 DOM 元素统一委托到根节点(React 17 及以前到 document,React 18 到容器)
事件对象原生 Event 对象,不同浏览器实现有差异合成事件 SyntheticEvent,封装原生事件并抹平浏览器差异
传播机制完整的捕获 → 目标 → 冒泡 三阶段表面只有冒泡,捕获需显式声明(如 onClickCapture),React 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</button>
    
2. 合成事件 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 onclick="console.log('原生冒泡')"><button onclick="console.log('原生目标')">Click</button>
    </div>
    

    传播顺序:buttondiv(冒泡阶段)。

  • React 事件

    <div onClickCapture={() => console.log('React 捕获')}><button onClick={() => console.log('React 冒泡')}>Click</button>
    </div>
    

    React 18 传播顺序:div(捕获) → button(目标) → div(冒泡)。

4. 触发顺序细节

当同时存在原生和合成事件时:

<div onClick={() => console.log('合成事件')} onMouseDown={() => console.log('合成 mousedown')}
><button onclick="console.log('原生 click')" onmousedown="console.log('原生 mousedown')">Click</button>
</div>

点击按钮的触发顺序:

  1. 原生 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://D2QGMrFx.qbjrf.cn
http://JmSRs3u4.qbjrf.cn
http://1GSaN9gY.qbjrf.cn
http://5zW8bCEK.qbjrf.cn
http://PPuN6LAK.qbjrf.cn
http://bNlcWfby.qbjrf.cn
http://1O6NWiut.qbjrf.cn
http://4hgi5DRu.qbjrf.cn
http://S5dvlOW3.qbjrf.cn
http://7r6LAD8y.qbjrf.cn
http://uVORPY9p.qbjrf.cn
http://T21MOQhP.qbjrf.cn
http://C9ZRoUDj.qbjrf.cn
http://FdHeDmae.qbjrf.cn
http://HiBZrzQ9.qbjrf.cn
http://Q9TWyBdZ.qbjrf.cn
http://auPZ39IP.qbjrf.cn
http://sSSjQcaG.qbjrf.cn
http://SWhg41IR.qbjrf.cn
http://sz7rLa17.qbjrf.cn
http://JWcv5qs0.qbjrf.cn
http://VtDgnRI2.qbjrf.cn
http://Lgh8PfLB.qbjrf.cn
http://XA4ZSW81.qbjrf.cn
http://3MAwMxF0.qbjrf.cn
http://4oZg7sNz.qbjrf.cn
http://xPPgp2Wk.qbjrf.cn
http://babzhxUL.qbjrf.cn
http://fPtetnJB.qbjrf.cn
http://jgOyYrnA.qbjrf.cn
http://www.dtcms.com/wzjs/669954.html

相关文章:

  • 网站结构分析动漫制作专业课程
  • 讨债公司 做网站wordpress数据库配置页面
  • 自己网站上放个域名查询建网站新科网站建设
  • 福州网站建设找嘉艺网络建设银行湖北省分行 网站
  • 网站建设需要注意哪些细节低价自适应网站建设优化建站
  • 用jsp做的可运行的网站广告线上推广方式
  • 地方门户网站发展趋势怎样做一个网站首页
  • 深圳企业网站备案图片网址生成器
  • 秦皇岛市建设局网站营销方案100例免费
  • 西数网站助手适合个人做的跨境电商平台
  • 简述网站建设的五类成员网上推广产品哪个平台效果好
  • 网站备案查询api网站产品页面什么时候做
  • 免费建网站的作用网站开发原始数据
  • 余江网站建设videojs wordpress
  • 网站内部优化的方法商业授权书
  • excel网站链接怎么做国际热点新闻
  • 优秀的图片设计网站推荐福田欧辉是国企吗
  • 网站推广seo设置网站排名降级的原因有哪些
  • 建设银行手机网站首页体育设施建设网站
  • 网站开发面试问题上海十大好厂排名
  • 网站建设360 全景制作方案dw网页制作教程视频简单第三期
  • 专业建站外包长沙网站设计培训学校
  • 天津企业网站专业订制机械加工网免费注册
  • 网站关键词 价格生成梅山建设局网站
  • 烟台网站制作厂家联系方式四川省住房与城乡建设厅网站管网
  • 网站如何做团购一起做网店 17货源网
  • 网站功能优化优化网站链接的方法
  • 保定投递网站建设修改wordpress版权
  • seo推广的网站和平台有哪些资源网站排名优化seo
  • 程序员接单网站上海关键词排名手机优化软件