最近、Reactの学習を開始し、コールバックを子要素に付加した後、親要素で「this」の参照が失われました。私は単純なタスクを構築しており、チェックされています。親がそれを削除し、要素を持たない新しい配列に状態を再割り当てできるように、親に返す。しかし、私はthis.state.todosTaskにアクセスできません。私は未定義になる。 以下は私のコードです。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>
)
}
}
パーフェクト。それをコンストラクタにバインドすると、クラス全体でこれを制御することができました。なぜ私は手動でそれをバインドする必要があるとして私はalittle混乱しています。私が手作業でバインドしたときにコンストラクタで何が起きているのか説明してください。 –
私は自分の返答に説明を追加しました。 –