P粉2768766632023-09-04 12:40:54
コードでは、セッションまたはルーターの値が変更されるたびに useEffect が実行されます (useEffect の 2 番目のパラメーター)。したがって、if も else も useEffect の同じ実行では実行されませんが、これらは急速に連続して実行される 2 つの異なる実行で実行されます。
これは、あなたが求めているものを達成するための 1 つの方法です。
実装例:
リーリーP粉0356005552023-09-04 00:28:17
ついに根本原因が分かりました。
これは supabase auth helper、これは非同期関数です。ロード中か間違っているかのステータスは含まれていません。つまり、最初にあることを意味します(ロード中であることを意味します)。読み込み中)。
この問題を解決する簡単な方法は、useSessionContext を直接使用することです。 session
は引き続き非同期で取得されますが、
isLoading と
error ステータスを同期的に取得してこの問題を解決でき、これらを
useEffect で使用できます。 内の条件分岐。
リーリー