2016-11-28 2 views
2

私は2つのJSクラスを持っています:App.jsx、Note.jsx。ボタンのReactJSコールクラスメソッド()

Note.jsx:App.jsxで

export default class Note{ 
    constructor(text) { 
    this.text = text; 
    } 

    changeNoteStatus(){ 
    console.log(this.text); 
    } 
} 

let tmpNote = new Note(String(this.state.value)); 
    this.notes.push({key:this.currId, value:tmpNote}); 

とApp.jsxに、私は単純なオブジェクトではなく、ノートのリストを作成した後changeNoteStatus()を呼び出すことができます

return this.notes.map((obj) => 
     <div className="note" onClick={obj.value.changeNoteStatus} key={obj.key} id={"note_" + obj.key}/> 
) 

このメソッドは(this.textのように)もうclassフィールドを認識しません。

私はマップ機能で{this.notes[obj.key].changeNoteStatu}も試してみました。

私を助けてください。

+0

問題を示すスタックスニペット( '[<]]'ツールバーボタン)を使用して** runnable ** [mcve]で質問を更新してください。 Stack SnippetsはJSXを含むReactJSをサポートします。 [これを行う方法はこちら](http://meta.stackoverflow.com/questions/338537/)。 –

答えて

0

このようにonClickで使用すると、ハンドラは間違ってthisという値で呼び出されます。

一つの解決策はFunction#bindを使用することです:

onClick={obj.value.changeNoteStatus.bind(obj.value)} 
// --------------------------------^^^^^^^^^^^^^^^^ 

...しかし、あなたの全体的なコードが構成されている方法に応じて、それをやってのより簡潔または効率的な方法があるかもしれません。

+1

それは動作します!どうもありがとうございました ! :) – kapuchaster

関連する問題