1

I'm learning Nuxt.js and I'm puzzled by how difficult it seems to be to simply redirect a user to another page from a method that is triggered via a click.

Here is the set up: I'm using Nuxt Auth to authenticate users, once authenticated I want them to be forwarded away from the signup page to another route. I already have middleware set up that redirect logged-in users, but it is only triggered when I refresh the page, not when I first log them in.

I have a method like this:

async login(event) {
   event.preventDefault()
   try {
      await this.$auth.loginWith('local', this.loginData)
      // this is where my redirect logic should go
   } catch(error) { ... }
}

So far I've tried using this.$nuxt.refresh() which doesn't do anything at all and I've also tried this.$router.push('/route') which seems to hang the page completely. Ideally, I would prefer the refresh approach so that I don't have to specify the landing page for logged in users in multiple places, but I also need to know how to use redirections inside methods, I would have thought it should be the most simple operation imaginable and yet it seems to be difficult to find.

Any tips would be highly appreciated!

UPDATE:

I've found a solution, although it's not an ideal one. I've added an if-statement into beforeCreate that checks this.$auth.loggedIn and if it's true, then it calls this.$auth.redirect('home') when "home" is defined in nuxt.config.js under auth redirect. The reason this solution is not ideal is that it relies on the auth module (as opposed to being a general redirect mechanism).

IVR
  • 1,718
  • 2
  • 23
  • 41

2 Answers2

0

There's a way in Nuxt to reload the page like so:

this.$router.go(0)

also you can find more information here

SaboSuke
  • 634
  • 6
  • 21
0

if this.$router is not working, try this

this.$nuxt.$options.router.push(url);
iminiki
  • 2,549
  • 12
  • 35
  • 45
Dhara Bhalala
  • 224
  • 1
  • 5