希望这有助于新手了解反应中方法绑定的目的。 [这里] [1]和[这里] [2]有一个很好的解释,但这将更多地解决问题的重点和关键。
答案 0 :(得分:0)
考虑这个课程:
class Pizza extends Component {
constructor(props);
super(props);
this.state = { text: 'hello world' };
hi () {
console.log(this.state.text);
}
render() {
return (
<div>
<button onClick={this.test}>
Click me
</button>
</div>
);
}
}
如果单击按钮,您将看到:
Uncaught TypeError: Cannot read property 'state' of null
这是因为该方法没有“绑定”到类Pizza的上下文。换句话说,该方法与类Pizza无关,与其他编程语言(如java)不同,其中,当在对象中定义方法时,它会自动指向该对象的实例。
如提供的链接中所述,解决此问题的一种方法是执行此操作:
test = () => {
console.log(this.state.text);
};
你会看到:
hello world
现在该方法受限于Pizza类的上下文。简单地说,test()方法需要在pizza类中打印出变量'state.text',因此我们需要将该方法“绑定”到该pizza对象。
希望这有帮助!