Кто-нибудь может объяснить, что происходит в этом коде, пожалуйста?
У меня есть модуль Reactjs, в котором я использовал компонент ReactDataGrid. Важная часть кода выглядит следующим образом:
export default class IssueTable extends Component {
state = {
issues: [],
postHtml: {},
isFullScreenMode: false,
loading: true,
columns: []
}
componentDidMount = () => {
this.props.getIssues(filter).then(response => {
...
//******** PLACE 1 THAT I THINK IT SHOULD WORK, BUT NOT! **********
//this.createIssueTableServiceObject()
...
this.refreshTable()
})
}
createIssueTableServiceObject() {
issuleTableService = {
getColumns: () => this.columns,
updateTableRow: this.handleRowsUpdated,
getPostHtml: issueId => this.state.postHtml[issueId],
getOriginalRow: rowIndex => this.originalIssues[rowIndex],
getRenderedRow: rowIndex => this.state.issues[rowIndex]
};
}
refreshTable = () => {
//******** PLACE 2 THAT IT WORKS **********
this.createIssueTableServiceObject()
this.setState({
...
})
}
columns = [{
....
formatter: (props) => {
return (<IssueCell
{...props}
issuleTableService= {issuleTableService}
/>)
}
}]
}
export let issuleTableService
Поскольку нет конфигурации для отправки данных в подкомпонент библиотеки React Data Grid (версия ^ 7.0.0-canary.16), мне нужно чтобы импортировать объект экспорта в модули, мне нужен редактор, который является свойством столбца.
Проблема в том, что для первых строк, которые отрисовываются в таблице, все нормально. Но когда я хочу внести некоторые изменения в строки, состояние компонента в экспортируемом объекте похоже на предыдущее состояние (до редактирования):
getPostHtml: issueId => this.state.postHtml[issueId], //**** this.state has not updated values
Поэтому мне нужно переместить создание объекта экспорта в место 2 в коде для его выполнения и обновления sh его при каждом обновлении таблицы.
Мой вопрос в том, что происходит с «this» в объекте экспорта? Сохраняет ли он копию «этого»?