javascript - 使用firebase登录后页面反复刷新

标签 javascript html firebase firebase-authentication

登录后跳转页面反复刷新。 这是javascript代码:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.

    window.location="comingsoon.html";
    var user = firebase.auth().currentUser;



  } else {
    // No user is signed in.


  }
});

function login(){

  var userEmail = document.getElementById("email_field").value;
  var userPass = document.getElementById("password_field").value;

  firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;

    window.alert("Error : " + errorMessage);

    // ...
  });

}

function logout(){
  firebase.auth().signOut();

}

最佳答案

您必须在执行代码后取消订阅事件监听函数onAuthStateChanged。为此,您可以这样写:

const unsubscribeAfterAuth = firebase.auth().onAuthStateChanged(function (user) {
    if (user) {


    window.location="comingsoon.html";
    var user = firebase.auth().currentUser;


  } else {
    // No user is signed in.


  }
});
unsubscribeAfterAuth();

这样您就不会在第一次 onAuthStateChanged 后获得更新,因为您的函数在第一次调用后不会监听该事件。

关于javascript - 使用firebase登录后页面反复刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888485/

相关文章:

html - 单击旋转 Font Awesome 90 图标

jquery - 使 "Drop Down Menu"和 "Head Menu"相对不会使 de "Drop Down Menu"在悬停时向下推 "Head Menu"

javascript - 如何实现类似于 youtube 卡片的上下文菜单?

java - 如何从内部匹配值获取节点键

javascript - 如何使用表单中的值在javascript中增加值

javascript - 如果react-router-dom不匹配任何路由,则页面重新加载

javascript - Node.JS:如何等待进程完成后再继续?

c# - 在 .NET 中使用 Firebase

ios - Firebase 下载任务队列 Swift

javascript - 使用 Javascript 检查 $.get 的返回值