ここで本当に明白な何かが間違っていますが、私はlyndaチュートリアル "Learning React.js"をやろうとしています。私はES6クラスを使用しており、webpack経由でBabelを使用しています。ReactJS webpack babel:パラメータを介して関数が渡されたボタンをクリックすると_this2が未定義です
問題は、ボードクラスからのNoteクラスへのパラメータとして渡される関数を実行しています。
私はのように記述することができる「注意」クラスを持っている:
//Method in Board class. I map through an array and call this function on each element to create notes.
eachNote(note) {
return (
<Note key = { note.id } id = { note.id } onRemove = { (id) => this.remove(id) }>
{ note.note }
</Note>
)
}
:
onRemoveは次のように注意する会から小道具として渡されています機能がある
remove() {
this.props.onRemove(this.props.id);
}
//Notes class
render() {
return (
<div className="note">
<p>{this.props.children}</p>
<span>
<button onClick={() => this.remove() }>X</button>
</span>
</div>
);
}
Boardクラスのremove()メソッドは、次のようになります。
//Remove method in the Board class
remove(id) {
let notes = this.state.notes.filter(note => note.id !== id);
this.setState({notes});
}
私はノートのXボタンをクリックすると、それはノートクラスでローカル関数を実行DOESが、その後プロパティ(onRemove())として渡されるメソッドを実行し、代わりに私が(Firefoxの)取得していません:
TypeError: _this2 is undefined
とChromeで私が取得:
Cannot read property 'remove' of undefined
それはしかし機能を見つけることができない理由を私は得ることはありません、私は正確にこれをしなかった以前のチュートリアルをやったし、それは大丈夫機能を見つけることができます。私は多分本当に簡単なものを見落としてしまったでしょう。
[EDIT:エクストラ会情報]それは私が何を期待出力コンソールで
//Board's render method
render() {
return (
<div className='board'>
{ this.state.notes.map(this.eachNote) }
</div>
);
}
。
'Board'クラスのコードをもっと投稿できますか? –
'Board'で定義されている' remove() 'メソッドに' this'をバインドするか、またはあなたのためにこれを定義するための矢印関数にする必要があるようです。 – brandNew
こんにちは、私はボードに関するより多くの情報でメインの質問を更新します。 @brandNew私は既に矢印関数を使用しています。自動的にバインドする必要があります。 – SirDigbyChickenCaesar