🎯 문제 상황: 캐릭터 선택 및 렌더링 이슈

📌 문제 요약

🕵️ 근본 원인 분석

  1. Zustand 스토어의 과거 데이터 문제
  2. 유효성 검사 로직의 취약점

🛠 해결 방법

1. Zustand 초기화

// 개발자 콘솔에서 실행
useMyCharStore.persist.clearStorage()
localStorage.clear()

2. 유효성 검사 로직 개선

const useEffectiveId = (characterId: number) => {
  const { data } = useCharList();

  const [hasValidSelection, setHasValidSelection] = useState(false);
  const [effectiveId, setEffectiveId] = useState<number | null>(null);

  useEffect(() => {
    if (characterId && data) {
      // 실제 존재 여부 확인
      const result = data.characters.find(
        (item) => item.userCharacterId === characterId
      );

      // 개선된 유효성 검사
      const valid = Boolean(characterId && result);
      setHasValidSelection(valid);

      if (valid) {
        setEffectiveId(characterId);
      } else {
        setEffectiveId(null);
      }
    }
  }, [characterId, data]);

  return { hasValidSelection, effectiveId };
};

3. 지연 로직 추가

useEffect(() => {
  if (characterId && characterId > 0) {
    // 약간의 지연을 주어 상태 업데이트 시간 확보
    const timer = setTimeout(() => {
      nav('/');
    }, 300);

    return () => clearTimeout(timer);
  }
}, [characterId, nav]);

🌟 핵심 개선 포인트