在 Nuxt JS vuex 中使用 Vue Router 重定向

Posted

技术标签:

【中文标题】在 Nuxt JS vuex 中使用 Vue Router 重定向【英文标题】:Redirect using Vue Router in Nuxt JS vuex 【发布时间】:2020-01-11 10:19:19 【问题描述】:

我正在构建一个登录/注册系统作为应用程序的一部分。我正在使用 Firebase 和 Vuex 来处理身份验证和数据库信息。我在 Nuxt JS 中有一些创建用户、登录和注销用户的操作。

我正在尝试在用户成功注册后实现重定向/当他们点击登录时,我的代码是:

export const actions = 

  /*
   * Create a user
   */
  createUser (commit, payload) 
    this.$fireAuth.createUserWithEmailAndPassword(payload.email, payload.password).then(function(firebaseUser) 
      commit('setUser', payload)
    ).catch(function(error) 
      console.log('error logging in' + error)
    );
  ,

  /*
   * Log a user into Beacon
   */
  login (commit, payload) 
    this.$fireAuth.signInWithEmailAndPassword(payload.email, payload.password).then(function(firebaseUser) 
      commit('setUser', payload)
    ).catch(function(error) 
      console.log('error logging in' + error)
    );
  ,

  /*
   * Sign a user out of Beacon
   */
  signOut (commit) 
    this.$fireAuth.signOut().then(() => 
      commit('setUser', null)
    ).catch(err => console.log(error))
  


我在 Vue JS 2.6.10 上使用 Nuxt JS 2.9.2

我有几个模块。

我已尝试使用this.router.push('/')window.location.href,但希望保留 SPA 功能。

【问题讨论】:

this.$router.pushthis.$router.replace 有什么问题? 您遇到了什么问题?你真的不会问任何问题。 【参考方案1】:

你有两种方法可以做到:

    $nuxt.$router.push 在行动中 将this.$router.push 作为参数传递给您的操作,并在您需要的地方调用。

希望这会有所帮助。

【讨论】:

只想补充一点,如果您使用外部函数(如突变/动作之外)但仍在同一个 Vuex 文件中,您需要从突变/动作中传递router ,如externalFunction(this.app.router) 否则,您无法正确访问它。 我们可以在actions中访问$nuxt.$router.push

以上是关于在 Nuxt JS vuex 中使用 Vue Router 重定向的主要内容,如果未能解决你的问题,请参考以下文章

前端vue进阶实战:从零打造一个流程图拓扑图项目Nuxt.js + Element + Vuex

[Nuxt] Display Vuex Data Differently in Each Page of Nuxt and Vue.js

[Nuxt] Use Vuex Actions to Delete Data from APIs in Nuxt and Vue.js

[Nuxt] Build a Vue.js Form then use Vuex Actions to Post to an API in Nuxt

Vue/Nuxt:如何在 vuex 商店中访问 Nuxt 实例?

在 Google Firestore 中处理查询游标的正确方法? (Vue/Nuxt.js)