извините, но вы делаете это неправильно.когда вы пишете:
onClick={() => this.openModal()}
, вы создаете новую функцию каждый раз при визуализации элемента.вместо этого я предлагаю вам связать метод внутри конструктора:
this.openModal = this.openModal.bind(this);
и внутри входной записи:
onClick={this.openModal}
таким образом, вы не будете создавать новую функцию каждый раз, когдаэлементы рендеринга, и openModal это будет указывать на сам элемент.
Если я правильно понимаю, проблема в этой строке:
result='<img id="aaa"... onClick={console.log(this)} />';
вы пытались пройтиJSX вместо строки?свяжите функцию openModal в конструкторе и передайте img функцию this.openModal.Я думаю, что если вы передадите JSX вместо строки, она будет работать
ОБНОВЛЕНИЕ
ОК, поэтому я взял код из Здесь и отредактировалэто немного
export class CellTemplate extends SampleBase {
getCellContent(date) {
if (date.getMonth() === 10 && date.getDate() === 23) {
return ( < div > < img src = "src/schedule/images/thanksgiving-day.svg" / > < div className = "caption" > Thanksgiving day < /div></div > );
}
cellTemplate(props) {
if (props.type === "monthCells") {
return ( < div className = "templatewrap" > {
this.getCellContent(props.date)
} > < /div>);
}
return;
}
render() {
return ( < div className = 'schedule-control-section' >
<
div className = 'col-lg-12 control-section' >
<
div className = 'control-wrapper' >
<
ScheduleComponent cssClass = 'cell-template'
width = '100%'
height = '650px'
selectedDate = {
new Date(2017, 11, 15)
}
cellTemplate = {
this.cellTemplate.bind(this)
} >
<
ViewsDirective >
<
ViewDirective option = 'Month' / >
<
/ViewsDirective> <
Inject services = {
[Month, Resize, DragAndDrop]
}
/> <
/ScheduleComponent> <
/div> <
/div> <
/div>);
}
}
в cellTemplate вы можете увидеть, как правильно вызвать getCellContent , а в getCellContent вы можете увидетькак бы мне вернуть JSX.