总结
- HTML和JS中,DOM事件都是类似
onclick
这样的小写,而 React 事件绑定属性的命名采用 驼峰式写法 。 - 尽量不要把DOM事件写在HTML中。
HTML 事件处理
- DOM事件写在html中不符合 行为、结构、样式 相分离的原则
- 尽量不要把DOM事件写在HTML中。
- 多元素绑定相同事件时,效率低。
- 不建议在HTML元素中写JavaScript代码。(将页面元素写在HTML内,JS代码写在
<script>
内会更好)
以onclick举例
HTML中的语法:
1 | <element onclick="SomeJavaScriptCode"> |
例子:
1 | <button onclick="activateLasers()"> |
然后activateLasers()写在JS代码中。
JS 事件处理
- 注意:JS代码要在HTML代码加载完成后执行
- 获取DOM元素=>绑定事件函数
DOM 0级事件处理
- 优点:符合 行为、结构、样式 相分离的原则。还可以选出DOM元素集合通过for循环统一操作。
- 缺点:每个DOM元素只能绑定一个同类事件。例如绑定onclick,当你想再绑定onclick会发现他被覆盖了。
以onclick举例
JavaScript 中语法:
1 | object.onclick=function(){SomeJavaScriptCode}; |
例子:
1 | <body> |
1 | <script> |
DOM 2级事件处理(事件监听)
addEventListener("事件名" , "事件处理函数" , "布尔值");
- false 事件冒泡;true 事件捕获
- 优点相比前两个就多了。可以选择是事件流。可绑定多个同类事件。事件名可以组成字符串。
- 注意:使用addEventListener绑定事件,等结束后及时使用removeEventListener移除监听
React事件处理
- React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同:
- React 事件绑定函数的命名采用驼峰式写法,而不是小写。
- 在类中书写时注意在构造函数中使用bind()绑定事件函数的this指向。
以onClick举例
在JSX语法中:
1 | <button onClick={activateLasers}> |
activateLasers函数另写
具体事例
当使用 ES6 class 语法来定义一个组件的时候,事件处理函数会成为类的一个方法。
例如,Toggle 组件渲染一个让用户切换开关状态的按钮的例子