Ich habe vor kurzem angefangen, React zu lernen, und nachdem ich einen Callback an ein Kindelement angehängt habe, habe ich den Verweis "this" im Elternelement verloren. Ich baue eine einfache Aufgabe und wenn es überprüft wird. Ich sende es zurück zum Elternteil, damit der Elternteil es löschen kann und den Zustand dem neuen Array ohne das Element neu zuweisen kann. Ich habe jedoch keinen Zugriff auf this.state.todosTask. Ich werde undefiniert. Unten ist mein Code.REACT Reagieren Sie, wie Sie nach einem Rückruf auf das richtige "this" zugreifen können
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>
)
}
Kinder Komponente
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>
)
}
}
Perfekt. Die Bindung an den Konstruktor gab mir die Kontrolle über die gesamte Klasse. Ich bin ein wenig verwirrt, warum ich es manuell binden muss. Kannst du bitte erklären, was im Konstruktor passiert, wenn ich es dort manuell binde. –
Ich fügte meiner Antwort eine Erklärung hinzu. –