在react中绑定事件和在html中类似,使用驼峰命名方式来绑定事件。事件接收的值不再是字符串而是一个函数。事件触发时执行这个函数。
1 | class MyComponent extends React.Component { |
上边的的代码可以看到,onClick指向了一个函数,这个函数有个事件参数。这里接收的event参数并非原生事件,而是react封装的SyntheticEvent.
SyntheticEvent
SyntheticEvent有以下特点:
事件代理
react 事件自动使用了事件代理,所有事件都代理到组件的最上层。所以不用担心事件绑定带来的性能问题。
SyntheticEvent属性
每个SyntheticEvent有以下属性
1 | boolean bubbles |
IE和标准浏览器差异
在IE中也需要使用stopPropagation()
和preventDefault()
来阻止冒泡和默认事件。在react v0.14以后不能使用return false
来阻止冒泡和默认事件。
异步调用事件
SyntheticEvent在当前组件中是公用的,当事件执行完毕,SyntheticEvent中的属性会被清空,等待下一次调用。所以在异步操作之后不能访问SyntheticEvent。如果想访问的话就需要使用e.persist()将事件单独提出来,这样事件就会一直存在。
欢迎转载,注明出处。原文地址:http://marxjiao.com/2017/05/11/react-event/