Supabase onAuthStateChange 不断触发(混音)

问题描述 投票:0回答:1

我正在遵循有关使用 Remix 设置 Supabase auth 的教程,当我一步步遵循代码时,我注意到如果我使用以下命令,我的组件会在无限循环中重新渲染:

const [supabase] = useState(() => createBrowserClient(env.SUPABASE_URL, env.SUPABASE_ANON_KEY));
const revalidator = useRevalidator();

// useEffect only depends on revalidator and supabase (which are memoized)
useEffect(() => {
  const { data: { subscription } } = supabase.auth.onAuthStateChange((event) => {
    console.log(event)
    // Revalidate or trigger page refresh when auth state changes
    revalidator.revalidate();
  });

  return () => subscription.unsubscribe(); // Clean up the subscription when component unmounts
}, [revalidator, supabase]);

当我从魔法链接进入页面时,事件总是

INITIAL_SESSION
,只有一个SIGNED_IN(当然)。 这是预期的行为吗?我显然不希望组件继续重新渲染。

authentication supabase remix.run
1个回答
0
投票

每次重新验证器更改时,都会运行

useEffect
,但您是在 useEffect 内部重新验证。每次运行它时,useEffect 都会重新验证它,导致它再次重新运行。

© www.soinside.com 2019 - 2024. All rights reserved.