【发布时间】:2020-04-14 12:57:16
【问题描述】:
我目前正在开发一个使用 Firebase 集成和 React 的项目。 我可以注册和登录,但我确实想要一些 Guard,以便在我连接时访问“已连接”页面,或者如果我没有被重定向到断开状态的默认页面。
我编写了以下代码以获得不同的路由并将其设置在 App.tsx 文件中:
const ConnectedRoute: React.FC<RouteProps> = ({ component, ...rest }) => {
var route = <Route />
var connected = isConnected()
console.log(connected)
if (connected){
route = <Route {...rest} component={component}/>
}
else{
route = <Route {...rest} render={() => <Redirect to ="/welcome" />} />
}
return route
}
const UnconnectedRoute: React.FC<RouteProps> = ({ component, ...rest }) => {
var route = <Route />
var connected = isConnected()
console.log(connected)
if (connected){
route = <Route {...rest} render={() => <Redirect to ="/home" />} />
}
else{
route = <Route {...rest} component={component}/>
}
return route
}
const App: React.FC = () => {
return (
<IonApp>
<IonReactRouter>
<IonRouterOutlet>
<Route exact path="/" render={() => <Redirect to="/welcome" />} />
<UnconnectedRoute path="/welcome" component={UnconnectedHome} exact />
<ConnectedRoute path="/home" component={ConnectedHome} exact />
<UnconnectedRoute path="/login" component={Login} exact />
<UnconnectedRoute path="/register" component={Register} exact />
<ConnectedRoute path="/events/create" component={CreateEvent} exact />
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
)
};
对于 firebase 初始化,我做了以下操作:
export async function initializeApp(){
console.log("Checking if app is initialized...")
if (firebase.apps.length == 0){
console.log("App initializing...")
firebase.initializeApp(firebaseConfig);
await firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL)
}
}
知道用户是否连接(作为cookie)的功能是这个:
export function isConnected(){
const res = firebase.auth().currentUser
console.log(res)
return res !== null
}
不过,当我重新加载标签时,它总是返回我 FALSE !
所以,我想知道如何在应用程序启动之前初始化 firebase 服务器?这是当前的问题吗?我目前对此一无所知,这让我非常沮丧......
如果你已经遇到过这样的问题,那真的对我有帮助!
谢谢!
【问题讨论】:
-
请将您的代码截图替换为实际代码,并使用 Stack Overflow 的格式化工具进行标记。
-
是的,对不起。确实这样更好。
标签: reactjs firebase ionic-framework