我正在关注udemy的教程系列,教师还没有真正解释以下代码行:
this.getrandomnum = this.getrandomnum.bind(this);
所以我对它的作用感到有些困惑,希望得到一些帮助。我的代码可以使用或不使用上面的代码。
以下是完整代码:
class App extends Component {
render() {
return (
<div className="App">
<h1> Hello</h1>
<Body />
</div>
);
}
}
class Body extends Component{
constructor(props){
super(props);
this.state = {};
this.getRandomNumber = this.getRandomNumber.bind(this);
}
getRandomNumber(){
console.log('some random number')
}
render(){
return (
<button onClick={this.getRandomNumber}>Random Number</button>
)
}
}
答案 0 :(得分:1)
当它被调用时,它会将this
绑定到类中的函数。重要的是在this
被调用时保留其背景。通常,这是在回调上完成的,例如onClick
组件中的Body
处理程序。
您的代码仍然有效,因为您没有引用任何类型的上下文(window.console
函数除外,在这种情况下是this
)。如果你没有在构造函数中绑定this
并且有这个:
<button onClick={this.getRandomNumber}>Random Number</button>
和getRandomNumber
:
getRandomNumber(e){
console.log(e)
}
它将返回e
为undefined
的错误,因为此函数的上下文绑定到window
对象。在这种情况下,e
不存在。