对bind如何工作感到困惑

时间:2018-03-30 03:36:59

标签: javascript reactjs bind

我对bind如何工作有一点了解,但是在我的组件中我正在使用this很多我对.bind(this)正在做什么以及它如何与之交互有点困惑onClick和onChange。我知道this.addTodo指的是TodoInput

class TodoInput extends Component {
constructor(props) {
super(props);

this.state = {
  value: 'test',
};

this.handleChange = this.handleChange.bind(this);
this.addTodo = this.addTodo.bind(this);
}

handleChange(e) {
console.log('CHANGE HERE');
}

addTodo(todo) {
 console.log('TODO:', todo);
}

render() {
 return (
   <div>
    <input type="text" value="" onChange={this.handleChange} />
    <button className="btn btn-primary" onClick={() => this.addTodo(this.state.value)}>Submit</button>
  </div>
);
  }
}

1 个答案:

答案 0 :(得分:1)

通过引用传递实例方法时,上下文将丢失。通过将其显式绑定到当前实例,您可以安全地通过引用传递它,同时保持this的值