I am trying to make a react calendar using dayJs library, I create a 2d array for month using the following code :
import dayjs from "dayjs";
export const getMonth = (month = dayjs().month()) => {
const year = dayjs().year();
const firstDayOfMonth = dayjs(new Date(year, month, 1)).day();
let currentMonthCount = 0 - firstDayOfMonth;
const daysMatrix = new Array(5).fill([]).map(() => {
return new Array(7).fill(null).map(() => {
currentMonthCount++
return dayjs(new Date(year, month, currentMonthCount))
})
});
return daysMatrix;
};
now when I import the function in my app.js file and pass it onto another component month.js
which displays the array using the following code :
import React, { Fragment } from 'react';
import Day from '../components/Day';
const Month = ({ month }) => {
if(month) {
month.map((e) => console.log(e));
}
return (
<div className='flex-1 grid grid-cols-7 grid-rows-5'>
{month.map((row, i) => (
<Fragment key={i}>
{row.map((day, j) => (
<Day day={day} key={j} />
))}
</Fragment>
))}
</div>
)
};
export default Month;
here, the console log outputs the month array as it should but I get an error in the return section stating unable to read properties of undefined reading map
, could someone please explain why am I getting this error although the map worked fine for the console.log statement?
my app.js file :
import React, { useState } from 'react';
import './App.css';
import { getMonth } from './util';
import { Fragment } from 'react';
import CalendarHeader from './components/CalendarHeader';
import Sidebar from './components/Month';
import Month from './components/Month';
function App() {
const [currentMonth, setCurrentMonth] = useState(getMonth());
return (
<Fragment>
<div className='h-screen flex flex-col' >
<CalendarHeader />
<div className="flex flex-1">
<Sidebar />
<Month month={currentMonth} />
</div>
</div>
</Fragment>
);
}
export default App;