RecoilJs 正在冻结 UI

RecoilJs is freezing the UI

我正在为我的项目使用反冲 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")
);

我试图在应用加载之前获取当前用户信息,以便无论用户是否登录,我都可以跟踪用户。但是应用程序在加载时卡住了,我在控制台上收到了这个错误。

我试图存储包含与当前用户相关的所有信息的 firebase 身份验证用户对象。保存用户对象时后坐力画面卡住可能有两种原因。

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

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