validate 方法

Nuxt.js 可以让你在动态路由对应的页面组件中配置一个校验方法用于校验动态路由参数的有效性。

  • 类型: Function
  1. validate({ params, query }) {
  2. return true // 如果参数有效
  3. return false // 参数无效,Nuxt.js 停止渲染当前页面并显示错误页面
  4. }
  1. async validate({ params, query, store }) {
  2. // await operations
  3. return true // 如果参数有效
  4. return false // 将停止Nuxt.js呈现页面并显示错误页面
  5. }

您还可以返回一个Promise:

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

Nuxt.js 可以让你在动态路由对应的页面组件(本例为: pages/users/_id.vue)中配置一个校验方法。

如果校验方法返回的值不为 true, Nuxt.js 将自动加载显示 404 错误页面。

  1. export default {
  2. validate ({ params }) {
  3. // Must be a number
  4. return /^\d+$/.test(params.id)
  5. }
  6. }

你也可以在validate 方法中校验 store 的数据 (如果 store 此前在 nuxtServerInit 方法 中被设置了的话):

  1. export default {
  2. validate ({ params, store }) {
  3. // 校验 `params.id` 是否存在
  4. return store.state.categories.some((category) => category.id === params.id)
  5. }
  6. }

您还可以在验证函数执行期间抛出预期或意外错误:

  1. export default {
  2. async validate ({ params, store }) {
  3. // 使用自定义消息触发内部服务器500错误
  4. throw new Error('Under Construction!')
  5. }
  6. }