我有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}
。
请帮帮我。
答案 0 :(得分:0)
当您在onClick
中使用它时,将使用错误的this
值调用处理程序。
一种解决方案是使用Function#bind
:
onClick={obj.value.changeNoteStatus.bind(obj.value)}
// --------------------------------^^^^^^^^^^^^^^^^
...但是根据整体代码的结构,可能会有更简洁或有效的方法。