Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Firebase和React-检查用户身份验证状态_Reactjs_Firebase_Firebase Authentication_Mobx_Mobx React - Fatal编程技术网

Reactjs Firebase和React-检查用户身份验证状态

Reactjs Firebase和React-检查用户身份验证状态,reactjs,firebase,firebase-authentication,mobx,mobx-react,Reactjs,Firebase,Firebase Authentication,Mobx,Mobx React,我正在开发基于应用程序的react+mobx,作为后端使用firebase。 当前在应用程序启动时,我需要检查用户是否已登录。 我使用firebase.auth().onAuthStateChange listener执行此操作,但因为它是异步函数,所以第一个响应始终为null。 因此,我当前的解决方案是显示一些加载消息,并在ComponentWillmountLifeHook中使用状态检查的put setInterval函数。 问题是-这个问题还有更优雅的解决方案吗?在调用firebase.a

我正在开发基于应用程序的react+mobx,作为后端使用firebase。 当前在应用程序启动时,我需要检查用户是否已登录。 我使用firebase.auth().onAuthStateChange listener执行此操作,但因为它是异步函数,所以第一个响应始终为null。 因此,我当前的解决方案是显示一些加载消息,并在ComponentWillmountLifeHook中使用状态检查的put setInterval函数。
问题是-这个问题还有更优雅的解决方案吗?

在调用firebase.auth()之前。在AuthStateChange上,将您的状态修改为:
state.authenticatedUser:“挂起”
。一旦调用,让您的观察者将该状态更改为真实用户信息


让您的组件考虑到
状态。在呈现和呈现“身份验证挂起”或“身份验证用户”时,authenticatedUser
谢谢您的回复,但此解决方案与我的类似,并不能解决主要问题-我的应用程序需要知道用户是否登录,挂起状态对我没有帮助。通过查看状态,你的应用程序将确切知道用户的状态:登录、未登录或正在验证。(您将正确初始化状态,并且当firebase发送通知时,观察者将更改状态)。您的组件有责任在每种状态下正确呈现自己。对不起,我不明白。验证侦听器在存储构造函数中启动。所以userState将在开始时处于挂起状态,而侦听器需要大约2秒钟的时间才能收到带有auth status的最终响应。所以我的应用程序仍然要等待这2秒,然后才能决定用户是否已登录。或者我错过了什么?你的应用程序将不会等待,在这2秒钟内,它将呈现“身份验证”或其他内容。请注意,在这2秒钟内,没有人或机器可以回答用户是否登录,所以您的应用程序只是正确显示了当前已知的内容。当调用您提供的侦听器时,它将修改应用程序的状态,并在其中输入用户信息。状态更改将自动导致组件重新提交,其呈现代码将在状态中查找用户信息详细信息,得出有授权用户的结论,并相应地呈现它们自己。关键是您不必等待构建或呈现组件。他们只是根据国家的不同而做出不同的表现。当您的侦听器听到firebase的消息时,它会改变状态。