首页 > 解决方案 > 如何在 Nuxt 的 asyncData 中重定向

问题描述

我是 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.jsvuejs2vue-componentnuxt.jsvue-router

解决方案


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

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

推荐阅读