validate 方法
Nuxt 允许在进行动态路由的组件内定义验证方法。
-
类型:
Function或Async 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