1

我正在为我的项目使用反冲 Js,我有一个原子

export const currentUserState = atom<User | null>({
  key: "currentUserState",
  default: null,
});

我正在使用它

const Startup: React.FC = ({ children }) => {
  const [loading, setLoading] = useState(false);
  const setCurrentUser = useSetRecoilState(currentUserState);
  useEffect(() => {
    setLoading(true);
    app.auth().onAuthStateChanged((user) => {
      setCurrentUser(user);
      setLoading(false);
    });
  }, [setCurrentUser]);
  if (loading) return <div>loading</div>;
  return <>{children}</>;
};

export default Startup;

这个组件被放置在

ReactDOM.render(
  <RecoilRoot>
    <BrowserRouter>
        <Startup>
          <App />
        </Startup>
    </BrowserRouter>
  </RecoilRoot>,
  document.getElementById("root")
);

我试图在应用程序加载之前获取当前的用户信息,以便我可以跟踪用户是否登录。但是该应用程序在加载时卡住了,我在控制台上收到此错误。 在此处输入图像描述

4

1 回答 1

1

我试图存储包含与当前用户相关的所有信息的 firebase auth 用户对象。在保存用户对象时,屏幕冻结可能有两个原因。

  1. 用户对象不是 JSON 对象。
  2. 用户对象可能太大。

当我尝试仅保存对象中的特定信息(如 id 和电子邮件)时,我的问题得到了解决。当我只保存特定信息时,不再冻结。

于 2020-10-20T02:47:20.637 回答