这是我的firebaseApp.ts文件:
import firebase from "firebase/app";
import "firebase/firestore";
const config = {
...
};
let fb = firebase.initializeApp(config);
const database = fb.firestore();
database.settings({ timestampsInSnapshots: true });
fb.auth().onAuthStateChanged(() => {
Vue.prototype.$isLoggedIn = firebase.auth().currentUser;
});
export const db = database;
我想从App.vue到达isLoggedIn,但是当我重新加载页面并且用户登录时,不会执行onAuthStateChanged。我必须单击某些东西才能获得“真实”的价值。在刷新后,我还应该在哪里初始化isLoggedIn以使其正常工作?
答案 0 :(得分:0)
如果您执行app.firestore();
,则还应该按照以下步骤进行app.auth()....
:
let app = firebase.initializeApp(config);
const database = app.firestore();
database.settings({ timestampsInSnapshots: true });
app.auth().onAuthStateChanged(() => {
Vue.prototype.$isLoggedIn = firebase.auth().currentUser;
});
不确定app
是传递firebase.initializeApp(config);
的const的最佳名称,您可以简单地调用firebase
或fb
。
答案 1 :(得分:0)
我自己解决了!我必须像这样在我的main.ts中放置onAuthStateChanged:
let app: Vue;
firebase.auth().onAuthStateChanged(function(user) {
if (!app) {
Vue.prototype.$isLoggedIn = firebase.auth().currentUser;
new Vue({
router,
store,
render: h => h(App)
}).$mount("#app");
}
});
我是Vue的新手,谢谢您的帮助! :)