每次我加载页面或路由到任何地方时,都会调用firebase.initializeApp()。该if
块中的第一个console.log声明了firebase.apps: []
,第二个是实际填充的对象,而且我不知道为什么每次InitFirebase时firebase.apps
的内容都为空.js被调用,或者为什么首先被多次调用。
我最初将它与其余的auth方法保存在一个文件中,并且我认为每当我调用静态方法时,它都在调用文件的其余部分,但是即使将其分离到自己的文件中,它仍然会调用每当我加载页面,重新加载页面或路由到页面中的其他路由时。
我在网上找到的所有内容都表明,firebase.initializeApp()
的多个呼叫可以用if(!firebase.apps.length)
来解决,但在这里似乎不起作用。我在这里缺少与导入或反应的交互吗?我该如何解决?
App.js
import React, { Component } from 'react';
import {BrowserRouter, Switch, Route} from 'react-router-dom';
import './App.css';
import * as InitFirebase from './auth/InitFirebase';
import Register from './auth/Register';
class App extends Component {
render() {
return (
<BrowserRouter>
<div className="App">
<Switch>
<Route exact path="/register" component={Register}/>
</Switch>
</div>
</BrowserRouter>
);
}
}
export default App;
InitFirebase.js
import firebase from 'firebase';
var config = {
//Private Info
};
if (!firebase.apps.length) {
console.log("firebase apps before:", firebase.apps);
firebase.initializeApp(config);
console.log("firebase apps after:", firebase.apps);
}