SolidStart 1.0 → 2.0 마이그레이션 후 dashboard 페이지가 무한 redirect 됩니다.
// dashboard/page.tsx
import { useNavigate } from '@solidjs/router'
export default function Dashboard() {
const navigate = useNavigate()
createEffect(() => {
if (!user()) navigate('/login') // ← 무한 루프
})
return <div>...</div>
}
1.0에서 잘 동작하던 코드. 2.0의 router API 변경점이 뭔가요?
댓글 4
2.0에서 createEffect의 reactivity 추적이 좀 더 strict해졌습니다. user() 변경마다 effect 재실행 → navigate → user() 다시 확인 → 무한 루프.
해결 — untrack 또는 createSignal 분리
또는 — 라우터 가드 패턴 (권장)
이 패턴이 2.0 권장. preload에서 권한 검사 → 통과 안 하면 자동 redirect. effect 안에서 navigate 호출 안 함.
2.0 router 변경점
1.0의 useNavigate + createEffect 패턴은 2.0에서 anti-pattern. preload + redirect로 옮기는 게 깔끔.
SolidStart 2.0의 preload 패턴이 정말 깔끔합니다. effect로 권한 처리 안 하고 데이터 의존성 그래프로 자동 처리.