如何在加载完成后在next-auth中获取会话数据

wfveoks0  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(131)

我尝试使用useSession获取数据,并将这些数据存储在我的状态中,但当我使用this获取数据时,它返回空对象,因为数据仍处于加载状态。
有没有什么方法可以让我只在状态为未加载后才获取数据,直到那时才阻止页面?

const { data: session, status } = useSession();
  useEffect(() => {
    const { data } = getCookieData(session);
    if (data) setUser(() => data.user);
  }, []);
0pizxfdo

0pizxfdo1#

评论变成了回答:
useSession会在状态变更后变更状态。如果您希望useEffect中的程式码在状态变更后执行,您可能会想要将该状态放在括号内,因此此程式码:

useEffect(() => {
    const { data } = getCookieData(session);
    if (data) setUser(() => data.user);
  }, []);

会变成这样

useEffect(() => {
    const { data } = getCookieData(session);
    if (data) setUser(() => data.user);
  }, [data,status]);

一般来说,每当你需要触发某个函数时,每当一个特定的道具或状态发生变化时,你应该把这些变量放在useEffect()中
有关useEffect和生命周期的更多信息,请参阅以下文档:https://reactjs.org/docs/hooks-effect.html

相关问题