我对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>
);
}
}
答案 0 :(得分:1)
通过引用传递实例方法时,上下文将丢失。通过将其显式绑定到当前实例,您可以安全地通过引用传递它,同时保持this
的值