我最近开始学习React,并且在将回调附加到子元素后,我在父元素中丢失了“this”的引用。我正在构建一个简单的任务,并在检查时进行。我将它发送回父项,以便父项可以将其删除并将状态重新分配给没有元素的新数组。但是,我没有访问this.state.todosTask。我弄不明白。 以下是我的代码。REACT React如何在回调后访问正确的“this”
Parent Element TodoList
constructor(props){
super(props);
this.state ={
todosTask: props.todos
}
}
handleCheckedTask(task){
console.log("Now Im in the todost"+task)
this.state.todosTask //= Undefined
}
render(){
return(
<div>
<h4>Todo List</h4>
<div className="form-check">
<label className="form-check-label">
{this.state.todosTask.map((todoElement)=>{
return <Todo todo={todoElement} key={todoElement.id} onCheckedTask={this.handleCheckedTask}/>
})}
</label>
</div>
</div>
)
}
辅元件
completed(event){
let self = this
let task = self.props.todo.task
let id = self.props.todo.id
console.log(self.refs.complete)
this.props.onCheckedTask({id:id,task:task})
}
render(){
return(
<div>
<input
className="form-check-input"
type="checkbox"
ref="complete"
onChange={this.completed.bind(this)}/>
{this.props.todo.task}
</div>
)
}
}
完美。将它绑定到构造函数给了我整个类的控制权。我很困惑,为什么我必须手动绑定它。你可以请解释当我手动绑定它在构造函数中发生了什么。 –
我为我的回复添加了一个解释。 –