일정 관리 상태 복원 - React StrictMode 이중 마운트 문제 해결
- useRef로 상태 복원 로직 한 번만 실행되도록 보장 - 두 번째 마운트에서 플래그/상태 삭제 방지
This commit is contained in:
parent
2c766e8da6
commit
7df7469b78
1 changed files with 14 additions and 2 deletions
|
|
@ -20,9 +20,17 @@ function AdminSchedule() {
|
|||
return kstDate.toISOString().split('T')[0];
|
||||
};
|
||||
|
||||
// sessionStorage에서 저장된 상태 복원
|
||||
// sessionStorage에서 저장된 상태 복원 (한 번만 실행)
|
||||
// 일정 폼에서 돌아올 때만 복원 (fromScheduleForm 플래그 확인)
|
||||
const stateRestoredRef = useRef(false);
|
||||
const getStoredState = () => {
|
||||
// 이미 복원 로직이 실행된 경우 다시 실행하지 않음 (StrictMode 이중 마운트 대응)
|
||||
if (stateRestoredRef.current) {
|
||||
const stored = sessionStorage.getItem('adminScheduleState');
|
||||
return stored ? JSON.parse(stored) : null;
|
||||
}
|
||||
stateRestoredRef.current = true;
|
||||
|
||||
try {
|
||||
const fromForm = sessionStorage.getItem('fromScheduleForm');
|
||||
if (fromForm) {
|
||||
|
|
@ -39,6 +47,7 @@ function AdminSchedule() {
|
|||
const storedState = getStoredState();
|
||||
|
||||
|
||||
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [user, setUser] = useState(null);
|
||||
const [toast, setToast] = useState(null);
|
||||
|
|
@ -517,7 +526,10 @@ function AdminSchedule() {
|
|||
</div>
|
||||
<div className="flex items-center gap-3">
|
||||
<button
|
||||
onClick={() => navigate('/admin/schedule/bots')}
|
||||
onClick={() => {
|
||||
sessionStorage.setItem('fromScheduleForm', 'true');
|
||||
navigate('/admin/schedule/bots');
|
||||
}}
|
||||
className="flex items-center gap-2 px-5 py-3 bg-gray-100 text-gray-700 rounded-xl hover:bg-gray-200 transition-colors font-medium"
|
||||
>
|
||||
<Bot size={20} />
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue