7赞
656
当前位置:  开发笔记 > 编程语言 > 正文

es6中为什么要bind(this)

在使用React中如果使用ES6的Classextends写法如果onClick绑定一个方法需要bind(this),而使用React.createClass方法就不需要.

在使用React中 如果使用ES6的Class extends写法 如果onClick绑定一个方法 需要bind(this),
而使用React.createClass方法 就不需要.
请问这是为什么呢

解释:React.createClass 是es5的写法默认是绑定了bind方法,而es6中 新增加了class,绑定的方法需要绑定this,如果是箭头函数就不需要绑定this,用箭头的方式

第一种写法:
_handleClick(e) {
console.log(this);
}
render() {
return (
<div>

this._handleClick.bind(this)}>点击


div>
);
}
第二种写法:
constructor(props) {
super(props);
this._handleClick = this._handleClick.bind(this)
}

_handleClick(e) {
console.log(this);
}

render() {
return (

>点击h1>
div>
);
}

第三种写法:
_handleClick = (e) => {
// 使用箭头函数(arrow function)
console.log(this);
}
render() {
return (

this._handleClick}>点击



);
}

推荐阅读
author-avatar
万万558
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有