React方法绑定解释

时间:2018-02-15 00:41:29

标签: javascript reactjs

希望这有助于新手了解反应中方法绑定的目的。 [这里] [1]和[这里] [2]有一个很好的解释,但这将更多地解决问题的重点和关键。

1 个答案:

答案 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对象。

希望这有帮助!