【问题标题】:How to redirect on validate route in Nuxt?如何在 Nuxt 中重定向验证路由?
【发布时间】:2019-12-04 02:44:00
【问题描述】:

如果验证查询后的页面错误,我想重定向。我怎么能做到这一点?这是我的代码

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
    }
  }

【问题讨论】:

  • 你遇到了什么错误?
  • 如果两项检查均失败,您可能还想return false;

标签: vue.js nuxt.js


【解决方案1】:

您可以使用“重定向”

例如:

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

【讨论】:

    【解决方案2】:

    It's recommended 从中间件重定向。您只需要创建一个中间件,例如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', '/', {});
    }
    

    然后,从您的页面...

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

    你可以按如下方式推送到路由器(记住validate()应该返回either boolean or promise):

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

    【讨论】:

      猜你喜欢
      • 2022-11-09
      • 2019-08-31
      • 2019-03-02
      • 2021-04-14
      • 2017-11-29
      • 2016-09-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      相关资源
      最近更新 更多