您正在浏览 Nuxt 2 文档。前往 Nuxt 3 文档, 或了解更多关于 Nuxt 2 长期支持

validate 方法

Nuxt 允许在进行动态路由的组件内定义验证方法。


  • 类型: FunctionAsync Function

validate 在每次导航到新路由之前调用。在服务端(Nuxt 应用程序的首次请求时)调用一次,在客户端导航到其他路由时调用。此方法接收 context 对象作为参数。

validate({ params, query, store }) {
  return true // params 有效时
  return false // 阻止 Nuxt 渲染路由并显示错误页面
}
async validate({ params, query, store }) {
  // 异步操作
  return true // params 有效时
  return false // 阻止 Nuxt 渲染路由并显示错误页面
}

也可以返回 Promise:

validate({ params, query, store }) {
  return new Promise((resolve) => setTimeout(() => resolve()))
}

Nuxt 允许在进行动态路由的组件内定义验证方法(以下示例为 pages/users/_id.vue)。

如果验证方法未返回 true,Nuxt 会自动加载 404 错误页面。

export default {
  validate({ params }) {
    // Must be a number
    return /^\d+$/.test(params.id)
  }
}

例如,也可以检查 store 中的某些数据(在此之前通过 nuxtServerInit 填充):

export default {
  validate({ params, store }) {
    // 检查 `params.id` 是否为已存在的分类
    return store.state.categories.some(category => category.id === params.id)
  }
}

在执行验证函数时,也可以抛出预期或非预期的错误:

export default {
  async validate({ params, store }) {
    // 抛出带有自定义消息的 500 internal server error
    throw new Error('Under Construction!')
  }
}
Edit this page on GitHub Updated at Tue, Apr 14, 2026