Я реал новичок и борюсь. Следующий фрагмент кода дает следующую ошибкуReact «Uncaught TypeError: Невозможно прочитать свойство неопределенного»
"Uncaught TypeError: Cannot read property 'creationDate' of undefined".
Если переместить код из populateTableRows и функции CreationDate внутри рендеринга, все работает хорошо. SurveyList получает данные от другого компонента. Я знаю, что это довольно уродливый компонент, и все остальные предложения тоже приветствуются, но меня больше всего интересует эта конкретная ошибка.
import React from 'react';
import ReactDOM from 'react-dom';
import { Table, Tr, Td } from 'reactable';
class SurveyList extends React.Component{
constructor(props) {
super(props);
this.state = {
isSaved: false,
surveys: []
};
this.creationDate = this.creationDate.bind(this);
this.populateTableRows = this.populateTableRows.bind(this);
}
creationDate (obj){
return new Date(obj._id.time).toISOString().slice(0,10);
}
populateTableRows(surveys){
var surveyRows = [];
surveys.forEach(function(obj){
surveyRows.push(
<Tr key={obj.surveyId}>
<Td column="SurveyId">{obj.surveyId}</Td>
<Td column="Survey name">{obj.surveyName}</Td>
<Td column="Creation date">{this.creationDate(obj)}</Td>
<Td column=""><ModalDialog key={obj.surveyId}
survey={obj}
/></Td>
</Tr>
);
});
return surveyRows;
}
render() {
var surveys = Array.from(this.props.surveys);
var surveyRows = this.populateTableRows(surveys);
return (
<Table className="table" id="table" sortable={true} filterable={['SurveyId', 'Survey name', 'Creation date']}>
{surveyRows}
</Table>
)
}
}
Я думаю, что это больше делать с размахом и закрытием возможно? Попробуйте выполнить следующие 'survey.forEach (() => {....'. Анонимная функция будет содержать область, которую вы используете для вызова 'this.creationDate'. Также проверьте этот ebook: https: // github. com/getify/You-Dont-Know-JS/tree/master/scope% 20% 26% 20closures – ctrlplusb
Спасибо, я определенно должен это прочитать. – JohnP