I am creating nested components to render the data that I have.
export const MyComponent = (props) => {
const groupMilestoneByYear = (data) => {
// Input: Milestone Data (arr[obj])
// Output: Milestone Data grouped by Year (bj[arr])
// Group by Year
let yearGroup = { '2020': [], '2021': [], '2022': [] } // make it dynamic
data.forEach(element => {
let currYear = element.event_date.slice(0, 4)
yearGroup[currYear].push(element)
});
return yearGroup
}
const renderTimelineContent = (data) => {
return (
data.forEach(milestone => {
let year = milestone.event_date.slice(0, 4)
let month = milestone.event_date.slice(5, 7)
let day = milestone.event_date.slice(8, 10)
return (
<Content>
<ContentYear
startMonth={month}
monthType="text"
startDay={day}
startYear={year}
useYear={false}
/>
<ContentBody title={milestone.text}>
</ContentBody>
</Content>
)
})
)
}
const formMilestoneTimeline = (milestones) => {
let yearGroup = groupMilestoneByYear(milestones)
return (
Object.keys(yearGroup).forEach(year => {
// for each year, render the timeline
return (
<Fragment>
<h3>{year}</h3>
<Timeline>
{renderTimelineContent(yearGroup[year])}
</Timeline>
</Fragment>
)
})
)
}
return (
formMilestoneTimeline(milestones)
);
}
As you can see, I am using functions that are returning multiple components in loops. But it gives me an error that says Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.
I don't quite get the error because I tried to return everywhere necessary.