四时宝库

程序员的知识宝库

「最简教程」每天一篇,轻松搞定 React——事件绑定(动图)

同步更新ES6教程,可以在个人主页查看

————致力于最简单的前端教程,每天一篇文章,轻松进阶前端

本章我们给时钟加个事件,点击时弹出当前时间

绑定事件

React绑定事件和原生HTML很像,有以下几点不同

1. 值是函数

在html事件的值是字符串,而react直接写成函数。

//html写法
<a onclick="infoTime()">
21:00
</a>
//React写法
<a onClick={infoTime}>
21:00
</a>

2. 阻止事件默认行为

原生html在事件函数里return false来阻止事件,React中使用e.preventDefault方法阻止。

比如上面的例子,点击a标签(需要加herf属性),默认会进行跳转,我们需要阻止跳转

infoTime(e){
 e.preventDefault()
 alert("21:00")
}

注:e是合成的,类似event

在类定义的组件中使用

我们给上篇的DEMO加上事件,初步代码如下,红色部分就是添加的事件

初步代码

实际运行发现弹出的是undefined,因为点击事件实际是window执行的,this.state.date中的this指向错误,我们期望this指向这个组件的实例,有2个方法,使用es5中的bind或者es6中的箭头函数。(关于this和bind不是很清楚的评论留言)

1. bind

在构造器中加红色部分代码,绑定这个函数,让infoTime中的this指向App

bind方式

2. 箭头函数

箭头函数会自动绑定作用域,如下图,用箭头函数代替

箭头函数方式

注:但箭头函数形式会在重新渲染时重新创建,可能造成性能问题,建议使用第一种方式

本篇内容到此结束,放出全部代码

完成代码

【提醒,关注后就能收到文章更新推送了


【前方雾大,关注一下不迷路 = 。=】

【html】【css】【html】【css】【html】【javascript】【html】【javascript】【javacsript】【css】【javascript】【css】

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接