在map()

时间:2016-11-28 09:37:32

标签: javascript reactjs

我有2个JS类:App.jsx,Note.jsx。

Note.jsx:

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

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

在App.jsx中:

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

在App.jsx中,我可以在一个简单的对象上调用changeNoteStatus(),但在创建一个Note列表并使用map()函数之后:

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

该方法不再识别类字段(如this.text)。

我也在映射函数中尝试了{this.notes[obj.key].changeNoteStatu}

请帮帮我。

1 个答案:

答案 0 :(得分:0)

当您在onClick中使用它时,将使用错误的this值调用处理程序。

一种解决方案是使用Function#bind

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

...但是根据整体代码的结构,可能会有更简洁或有效的方法。