fix(p2): Calendar view toggle - sync internal view state with parent prop via useEffect

This commit is contained in:
Hermes
2026-07-31 01:35:02 +00:00
parent ca8ff5d13b
commit 08841abd68
2 changed files with 9 additions and 3 deletions
+1 -1
View File
@@ -401,7 +401,7 @@ export default function CalendarPage() {
</div> </div>
} }
> >
<BigCalendar key={view} <BigCalendar
events={filteredEvents} events={filteredEvents}
onEventDrop={handleEventDrop} onEventDrop={handleEventDrop}
defaultView={view} defaultView={view}
@@ -1,6 +1,6 @@
'use client'; 'use client';
import { useCallback, useMemo } from 'react'; import { useCallback, useMemo, useState, useEffect } from 'react';
import { Calendar, dateFnsLocalizer, Views } from 'react-big-calendar'; import { Calendar, dateFnsLocalizer, Views } from 'react-big-calendar';
import withDragAndDrop from 'react-big-calendar/lib/addons/dragAndDrop'; import withDragAndDrop from 'react-big-calendar/lib/addons/dragAndDrop';
import 'react-big-calendar/lib/css/react-big-calendar.css'; import 'react-big-calendar/lib/css/react-big-calendar.css';
@@ -76,6 +76,11 @@ export function BigCalendarWrapper({
onViewChange, onViewChange,
}: BigCalendarWrapperProps) { }: BigCalendarWrapperProps) {
const router = useRouter(); const router = useRouter();
const [currentView, setCurrentView] = useState(defaultView);
useEffect(() => {
setCurrentView(defaultView);
}, [defaultView]);
const handleSelectEvent = useCallback( const handleSelectEvent = useCallback(
(event: CalendarEvent) => { (event: CalendarEvent) => {
@@ -102,6 +107,7 @@ export function BigCalendarWrapper({
const handleViewChange = useCallback( const handleViewChange = useCallback(
(newView: string) => { (newView: string) => {
setCurrentView(newView);
if (onViewChange) onViewChange(newView); if (onViewChange) onViewChange(newView);
}, },
[onViewChange] [onViewChange]
@@ -129,7 +135,7 @@ export function BigCalendarWrapper({
eventPropGetter={eventStyleGetter} eventPropGetter={eventStyleGetter}
onSelectEvent={handleSelectEvent} onSelectEvent={handleSelectEvent}
views={['month', 'week', 'day']} views={['month', 'week', 'day']}
defaultView={defaultView} key={defaultView} view={currentView}
date={date} date={date}
onNavigate={handleNavigate} onNavigate={handleNavigate}
onView={handleViewChange} onView={handleViewChange}