先看一段代码:一个简单的点赞自增组件;
import ReactDOM from 'react-dom';
import React, { Component } from 'react';
class Profile extends Component {
constructor( props ) {
super( props )
this.state = {
liked: 0
};
this.likedCallback = this.likedCallback.bind(this);
}
likedCallback(){
console.log("ooooo")
let liked = this.state.liked;
liked++;
this.setState({
liked
});
}
render(){
return (
我的名字叫 {this.props.name}
我今年{this.props.age}岁
点赞总数:{this.state.liked}
)
}
}
const props = {
name:"hahaha",
age:"12"
}
let root = document.getElementById('app');
ReactDOM.render(
, root
);
有点不太明白为什么要交这一句:this.likedCallback = this.likedCallback.bind(this);
当然还有一种写法是不加这一句,但是在这一句:
要改成:
此处的this.likedCallback只是实例方法的引用,此时的likedCallback里面的this已经变成全局this,反正不是实例自己了,所以要用bind在绑定一下,不知道自己这样自圆其说对不对,但是到这里就自己解释不下去了,还是对js了解的不够深刻,有谁能给讲解一下,尤其是在constuctor函数里面的这一句this.likedCallback = this.likedCallback.bind(this);,通俗点哈,谢谢各位了Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
自己先顶一下啊
你的理解可以说是对的。
this.likedCallback = this.likedCallback.bind(this);实际上只是个偷懒写法,这样写之后的所有
this.likedCallback都不用手动再bind(this)而已。