如何在Nuxt的asyncData中重定向

问题描述 投票:0回答:3

我是 vue.js 新手,我有一个简单的问题。

我有如下代码:

  asyncData({ params, error }) {
    return Job.api()
      .fetchByID(params.id)
      .then((response) => {
        const selectedJob = response.entities.jobs[0]
        if (selectedJob) {
          const industryID = selectedJob.industryId
          return Industry.api()
            .fetchByID(industryID)
            .then((result) => {
              const jobInd = result.response.data
              return {
                tagsArray:
                  selectedJob.tags === 'null' || selectedJob.tags === ''
                    ? []
                    : selectedJob.tags.split(','),
                job: selectedJob,
                jobIndustry: jobInd,
              }
            })
            .catch(() => {
              error({
                statusCode: 404,
                message: 'Job Industry not found',
              })
            })
        }
      })
      .catch(() => {
        error({
          statusCode: 404,
          message: 'Job not found',
        })
      })
  },

我想知道在捕获404错误后如何将页面重定向到主页。

vue.js vuejs2 vue-component nuxt.js vue-router
3个回答
6
投票

asyncData()
的参数是Nuxt上下文,其中包括可用于重定向用户的
redirect()

export default {
  asyncData({ redirect, params, error }) {
    return Job.api()
      .fetchByID(params.id)
      .then(/*...*/)
      .catch(() => {
        redirect('/')
      })
  }
}

0
投票
 async asyncData({  params ,error , redirect }) {
 #
 #
 #
 #
 # any code you want 
 return redirect(301, "YourNewRoutePath")

}

-2
投票

您可以以编程方式将用户重定向到另一个页面,如下所示:

this.$router.push({ name: 'home' })

this.$router.push('/')

注意:使用名称的第一个示例比硬编码路径更好 示例:

.catch((error) => {
    error({
      statusCode: 404,
      message: 'Job not found',
    })
   this.$router.push({ name: 'home' })
  })
© www.soinside.com 2019 - 2024. All rights reserved.