Это может происходить, потому что в данный момент ваш код пытается получить данные из состояния, данные еще не там - хотя, возможно, они будут добавлены позже.Это то, что случается довольно часто, по моему опыту.Вы, вероятно, должны проверить, что объект существует, прежде чем пытаться получить доступ к свойству на нем - и вернуть null или undefined в случае, если он не существует:
this.state.tutors[0] ? this.state.tutors[0].email : null
EDIT (в ответ на дополнительные примеры кода):
- Предполагая, что ваша функция извлечения работает нормально и добавляет извлеченные данные в состояние (я бы использовал forEach вместо map, чтобы поместить элементы в массив, или просто отобразить полученный массив и добавить, чтонапрямую в состояние, без промежуточного массива / переменной / толчка - но я думаю, что ваш код должен работать) ...
- Проблема связана с методом рендеринга, поскольку, когда компонент первоначально отображает данныееще не в состоянии, и поэтому вы передаете пустой массив компоненту TutorTable, который, вероятно, в свою очередь вызывает ошибку, которую вы видите.
- Данные добавляются в состояние позже, но на этом этапеошибка при начальном рендеринге уже произошла.
- Эту проблему можно решить, выполнив условную визуализацию TutorTable, только когдаДанные добавляются в состояние:
<div className="col-7">
<h3> My Tutors </h3>
{this.state.tutors.length > 0 && <TutorsTable tutors={this.state.tutors} />}
</div>
если вы console.log из this.state.tutors в методе render (), вы должны увидеть в консоли пустой массив ([]), возвращенный при первоначальном рендеринге, а затем массив, заполненный данными, когда компонент перезапустится.-отдает, когда данные добавляются в состояние.
Надеюсь, это поможет.