Похоже, что ваш appointmentdata
уже был проанализирован, поэтому просто замените:
this.setState({ appointmentdata: JSON.parse(appointmentdata.replace ("Array", ""))});
на:
this.setState({ appointmentdata });
Теперь он не работает, потому что вы передаете массив в JSON.parse()
, но он ожидает строку, содержащую действительный JSON:
// This works:
console.log(JSON.parse(`[{
"id": "1",
"start_date": "2020-05-09 15:30:00",
"end_date": "2020-05-09 16:00:00",
"cust_email": "admin@gmail.com"
}, {
"id": "2",
"start_date": "2020-05-09 00:00:00",
"end_date": "2020-05-09 00:30:00",
"cust_full_name": "mubeen",
"cust_email":""
}]`));
// This doesn't work:
console.log(JSON.parse([{
"id": "1",
"start_date": "2020-05-09 15:30:00",
"end_date": "2020-05-09 16:00:00",
"cust_email": "admin@gmail.com"
}, {
"id": "2",
"start_date": "2020-05-09 00:00:00",
"end_date": "2020-05-09 00:30:00",
"cust_full_name": "mubeen",
"cust_email":""
}]));
.as-console-wrapper {
max-height: 100% !important;
}
Если он не работает после внесения этих изменений, возможно, при первом рендеринге эти данные еще не были загружены, поэтому выдается ошибка, потому что state.appointmentsdate
равно undefined
, поэтому он не может найти функцию .map
.
Чтобы исправить это, вы можете заменить:
{ this.state.appointmentdata.map(data => <p>{ data.start_date }</p>) }
на:
{ (this.state.appointmentdata || []).map(data => <p>{ data.start_date }</p>) }
Или:
{ this.state.appointmentdata?.map(data => <p>{ data.start_date }</p>) }
Или просто инициализируйте state
с помощью appointmentdata: []
, чтобы при первом рендеринге он содержал пустой массив вместо undefined
.