fix_loop_loading
This commit is contained in:
@@ -45,8 +45,17 @@ function AnalysisYearProviderInner({ children }: { children: React.ReactNode })
|
|||||||
const yearFromUrl = searchParams.get('year')
|
const yearFromUrl = searchParams.get('year')
|
||||||
if (yearFromUrl && !isNaN(Number(yearFromUrl))) {
|
if (yearFromUrl && !isNaN(Number(yearFromUrl))) {
|
||||||
console.log('[AnalysisYear] Initial year from URL:', yearFromUrl)
|
console.log('[AnalysisYear] Initial year from URL:', yearFromUrl)
|
||||||
setSelectedYearState(Number(yearFromUrl))
|
const year = Number(yearFromUrl)
|
||||||
|
// availableYears에 포함된 년도만 사용
|
||||||
|
const validYear = availableYears.includes(year) ? year : currentYear
|
||||||
|
setSelectedYearState(validYear)
|
||||||
setIsInitialized(true)
|
setIsInitialized(true)
|
||||||
|
// URL에 유효하지 않은 연도가 있으면 제거
|
||||||
|
if (!availableYears.includes(year) && pathname !== '/') {
|
||||||
|
const params = new URLSearchParams(searchParams.toString())
|
||||||
|
params.delete('year')
|
||||||
|
router.replace(params.toString() ? `${pathname}?${params.toString()}` : pathname)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,10 +66,12 @@ function AnalysisYearProviderInner({ children }: { children: React.ReactNode })
|
|||||||
// availableYears에 포함된 년도만 사용 (없으면 현재 연도 사용)
|
// availableYears에 포함된 년도만 사용 (없으면 현재 연도 사용)
|
||||||
const validYear = availableYears.includes(year) ? year : currentYear
|
const validYear = availableYears.includes(year) ? year : currentYear
|
||||||
setSelectedYearState(validYear)
|
setSelectedYearState(validYear)
|
||||||
// URL에 year 파라미터 추가 (유효한 년도만)
|
// URL에 year 파라미터 추가 (유효한 년도만, 루트 페이지 제외)
|
||||||
const params = new URLSearchParams(searchParams.toString())
|
if (pathname !== '/') {
|
||||||
params.set('year', validYear.toString())
|
const params = new URLSearchParams(searchParams.toString())
|
||||||
router.replace(`${pathname}?${params.toString()}`)
|
params.set('year', validYear.toString())
|
||||||
|
router.replace(`${pathname}?${params.toString()}`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setIsInitialized(true)
|
setIsInitialized(true)
|
||||||
@@ -69,7 +80,7 @@ function AnalysisYearProviderInner({ children }: { children: React.ReactNode })
|
|||||||
|
|
||||||
// URL 파라미터와 동기화 (초기화 이후에만 실행)
|
// URL 파라미터와 동기화 (초기화 이후에만 실행)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isInitialized) return
|
if (!isInitialized || pathname === '/') return // 루트 페이지에서는 실행 안 함
|
||||||
|
|
||||||
const yearParam = searchParams.get('year')
|
const yearParam = searchParams.get('year')
|
||||||
if (yearParam && !isNaN(Number(yearParam))) {
|
if (yearParam && !isNaN(Number(yearParam))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user