Zhu Xiao Yu
Zhu Xiao Yu

Reputation: 31

How to redirect on validate route in Nuxt?

I want to redirect if a page after validate its query is wrong. How could I achieve this ? Here is my code

validate({ params, query, router }){
    if(isAfter(new Date(query.date_check_in), addDays(new Date(), 1)) !== true) {
      query.date_check_in = format(addDays(new Date(), 1), 'YYYY-MM-DD')
      query.date_check_out = format(addDays(new Date(), 2), 'YYYY-MM-DD')
      return true
    } else if(query.date_check_in === 'Invalid Date' || query.date_check_out === 'Invalid Date') {
      router.push('search')
      return true
    }
  }

Upvotes: 2

Views: 3491

Answers (2)

V-D
V-D

Reputation: 23

It's recommended to redirect from middleware. You just need to create a middleware, e.g. src/middleware/redirect.js.

export default function({ app, redirect }) {
    // Option 1: your store isn't reset
    app.router.push(`/`);

    // Option 2: an actual redirect (check status code), which will also reset Vuex store 
    redirect('301', '/', {});
}

Then, from your page...

export default {
    middleware: [
        'redirect',
    ],
},

You can push to router as follows (remember validate() should return either boolean or promise):

validate({ app }) {
    app.router.push('/');

    return true;
},

Upvotes: 1

Deasurv
Deasurv

Reputation: 61

you can use 'redirect'

for example:

validate({ store, redirect }) {
    // some codes...
    redirect('/')
}

Upvotes: 6

Related Questions