P粉2768766632023-09-04 12:40:54
코드에서 useEffect는 세션이나 라우터의 값이 변경될 때마다 실행됩니다(useEffect의 두 번째 매개변수). 따라서 if와 else는 동일한 useEffect 실행에서 실행되지 않지만 빠르게 연속해서 실행될 수 있는 두 가지 다른 실행에서 실행됩니다.
이것은 당신이 원하는 것을 달성하는 한 가지 방법입니다.
구현 예:
으아악P粉0356005552023-09-04 00:28:17
드디어 근본 원인을 찾았습니다.
supabase 인증 도우미는 비동기 함수이며 로드 중인지 오류인지에 대한 상태를 포함하지 않습니다. 이는 시작 부분에 있음을 의미합니다(로드 중임을 의미).
이 문제를 해결하는 간단한 방법은 useSessionContext
。 useSessionContext
session
仍将以异步方式获取,但可以通过同步方式获取 isLoading
和 error
状态来解决此问题,并且它们可用于 useEffect
를 직접 사용하는 것입니다. session
isLoading 및 error
상태를 동기적으로 가져오면 해결될 수 있으며 useEffect🎜 내의 조건부 분기에서 사용할 수 있습니다. 🎜
🎜새 코드는 다음과 같습니다: 🎜
으아악회신하다0