->
class Toggle extends React.Component {   constructor(props) {     super(props);     this.state = {isToggleOn: true};     // This binding is necessary to make `this` work in the callback     this.handleClick = this.handleClick.bind(this);   }   handleClick() {     this.setState(prevState => ({       isToggleOn: !prevState.isToggleOn     }));   }   render() {     return (       <button onClick={this.handleClick}>         {this.state.isToggleOn ? ‘ON’ : ‘OFF’}       </button>     );   } } ReactDOM.render(   <Toggle />,   document.getElementById(‘root’) );  | 
Function.prototype.bind() – JavaScript | MDN
然后看到中文解释:
“
在JSX回调中你必须注意 this 的指向。 在 JavaScript 中,类方法默认没有 绑定 的。如果你忘记绑定 this.handleClick 并将其传递给onClick,那么在直接调用该函数时,this 会是 undefined 。
这不是 React 特有的行为;这是 JavaScript 中的函数如何工作的一部分。 一般情况下,如果你引用一个后面没跟 () 的方法,例如 onClick={this.handleClick} ,那你就应该 绑定(bind) 该方法。
”
【总结】
貌似懂了。但是不全懂。总之就是:
如果后面要调用到this.handleClick:
  render() {     return (       <button onClick={this.handleClick}>         {this.state.isToggleOn ? ‘ON’ : ‘OFF’}       </button>     );   }  | 
最好用ReactJS中推荐的:
class Toggle extends React.Component {   constructor(props) {     super(props);     this.state = {isToggleOn: true};     // 这个绑定是必要的,使`this`在回调中起作用     this.handleClick = this.handleClick.bind(this);   }  | 
写就好了。
【后记】
后来有点明白了:
此处的bind(this),主要的作用就是:
被绑定的函数内部,如果使用this,就可以识别是当前类(或Component)的实例了。
否则没有bind(this)的话,this.setState之类的函数,就无法识别了。
转载请注明:在路上 » 【基本解决】ReactJS中bind函数bind()的含义