I have data in an array of objects as below:
history = [
{item: cake, calories: 120, datetime: 2022-11-16 07:51:26},
{item: chicken, calories: 250, datetime: 2022-11-16 13:48:46},
{item: pizza, calories: 420, datetime: 2022-11-25 11:13:42}
];
I want to render a div with a heading for the date and group all items with same dates in a list. I am using my map function like below:
function renderHistory () {
let date;
return props.history.map((item, i) => {
const dateAdded = item.datetime.split(" ")[0];
if (date !== dateAdded) {
date = dateAdded;
return (
<>
<div>
<h2>{dateAdded}</h2>
<li>{item.item} - {item.calories} calories</li>
</>
)
}
return (
<>
<li>{item.item} - {item.calories} calories</li>
</div>
</>
)
})
}
I get an error Expected corresponding JSX closing tag for <div>
If I return like below the second item gets out of the div.
return props.history.map((item, i) => {
const dateAdded = item.datetime.split(" ")[0];
if (date !== dateAdded) {
date = dateAdded;
return (
<div>
<h2>{dateAdded}</h2>
<li>{item.item} - {item.calories} calories</li>
</div>
)
}
return (
<li>{item.item} - {item.calories} calories</li>
)
})
How do I put all items with same date in a single div?