首页 > 解决方案 > 重定向到主页

问题描述

我在我的 vue 注册中遇到了下一个问题。当我单击注册时,它会将我重定向到主页。也许使用一些条件可以解决这个问题。我怎样才能防止这种情况发生?有任何想法吗?我的Javascript:

register() {
      firebase 
        .auth()
        .createUserWithEmailAndPassword(this.email, this.lozinka)
        .then(
        function() {
         console.log('Success'); 
         let id = this.email
          db.collection("user")
          .doc(id)
          .set({
            korisnicko_ime: this.korisnicko_ime,
            email: this.email,
            lokacija: this.lokacija,
            ime_objekta: this.ime_objekta,
            kontakt: this.kontakt,
          })
          .then((doc) => {
                console.log("Saved", doc)
            })
              })
              .catch(function(error) {
                console.error("Error...", error);
                if ( store.currentUser=null ) {
                  this.$router.replace({ name: 'Register'});
                }
              });
        
        console.log('Continue'); 
        this.$router.replace({ name: 'Home'});
        
    },

标签: javascriptvue.js

解决方案


我不知道你实际上想要实现什么,但你正在做的是触发一个请求,在请求的承诺上注册你的回调并立即替换你当前的路由。

register() {
  firebase
    .auth()
    .createUserWithEmailAndPassword(this.email, this.lozinka)
    .then(successCallback)
    .catch(errorCallback);

  this.$router.replace({ name: 'Home'});
}

我猜您可能想等待注册请求的响应并根据承诺是成功解决还是出现错误来重定向您的用户?

首先,您可能应该更深入地了解

  • 用它的async / await语法承诺
  • let / var上使用const
async register() {
  try {
    const registerResponse = await firebase
      .auth()
      .createUserWithEmailAndPassword(this.email, this.lozinka);

    console.log("Success");
    const id = this.email;

    const collectionResponse = await db
      .collection("user")
      .doc(id)
      .set({
        korisnicko_ime: this.korisnicko_ime,
        email: this.email,
        lokacija: this.lokacija,
        ime_objekta: this.ime_objekta,
        kontakt: this.kontakt,
      });

    console.log("Saved", doc);

    // After everything was successfull, redirect to home
    this.$router.replace({ name: 'Home'});

  } catch(error) {
    console.error("Error...", error);

    if ((store.currentUser = null)) this.$router.replace({ name: "Register" });
  }
}

推荐阅读