小さなtodoアプリに問題があります。私はエラーCannot read property 'todos' of undefined
"this"は私のクラス内では定義されていません
this
が
addTodo
の内側にバインドされているのはなぜ
なくremoveTodo
がある項目を削除しようとするたびに?
トリガがここで行われる:<button onClick={() => removeTodo(id)}> X </button>
デモのおかげ
JSfiddleに。
小さなtodoアプリに問題があります。私はエラーCannot read property 'todos' of undefined
"this"は私のクラス内では定義されていません
this
が
addTodo
の内側にバインドされているのはなぜ
なくremoveTodo
がある項目を削除しようとするたびに?
トリガがここで行われる:<button onClick={() => removeTodo(id)}> X </button>
デモのおかげ
JSfiddleに。
removeTodo
をプロパティ初期化矢印の機能にするか、action.bound
デコレータを使用します。
removeTodo = (id) => {
var filtered = this.todos.filter(todo => todo.id !== id);
this.todos.replace(filtered);
}
または::
@action.bound
removeTodo(id) {
var filtered = this.todos.filter(todo => todo.id !== id);
this.todos.replace(filtered);
}
ありがとうTholleそれは今働いています。私は単に '' @ action.bound() ''を自分の関数に追加して、すべてが期待どおりに機能しています。 –
@jonathandion素晴らしい! – Tholle
関数宣言/表現VS [アロー機能が重複する可能性:あなたはまた、あなたが参照を失うことはありませんMobX配列replaceを使用する必要があり、彼らは、交換/同等か? ](http://stackoverflow.com/questions/34361379/arrowfunction-vs-function-declaration-expressions-are-they-equivalent-exch) – Andreas