La méthode validate
Nuxt vous permet de définir une méthode de validation à l'intérieur de votre composant de routes dynamiques.
-
Type:
FunctionouAsync Function
validate est appelé avant chaque navigation sur une nouvelle route. Il sera appelé une fois côté serveur: lors de la première requête à l'application Nuxt et côté client: lors de la navigation sur d'autres routes . Cette méthode prend l'objet context en tant qu'argument.
validate({ params, query, store }) {
return true // si les paramètres sont valides
return false // ceci va arrêter Nuxt dans son render de la route et afficher la page d'erreur
}
async validate({ params, query, store }) {
// opérations asynchrone à attendre
return true // si les paramètres sont valides
return false // ceci va arrêter Nuxt dans son render de la route et afficher la page d'erreur
}
On peut aussi renvoyer des promesses:
validate({ params, query, store }) {
return new Promise((resolve) => setTimeout(() => resolve()))
}
Nuxt vous permet de définir une méthode de validation à l'intérieur de votre composant de routes dynamiques (dans notre exemple: pages/users/_id.vue).
Si la méthode de validation ne retourne pas true, Nuxt va automatiquement charger la page d'erreur 404.
export default {
validate({ params }) {
// Doit être un nombre
return /^\d+$/.test(params.id)
}
}
On peut aussi vérifier de la data dans notre store (remplie par exemple par nuxtServerInit avant l'action):
export default {
validate({ params, store }) {
// On vérifie si `params.id` est une catégorie existante
return store.state.categories.some(category => category.id === params.id)
}
}
On peut aussi renvoyer des erreurs attendues (ou pas) durant l'exécution de la fonction de validation:
export default {
async validate({ params, store }) {
// Renvoie une erreur interne serveur 500 avec un message personnalisé
throw new Error('En cours de construction !')
}
}
Sébastien Chopin
Nazaré da Piedade
Nobu
川音리오
Maciek Palmowski
Nestor Vera
Daniel Roe
Yue Yang
Jeronimas
Clément Ollivier
Alexander Lichter
N3-rd
Adrien Zaganelli
Mag
Stefan Huber
Olga Bulat
Paiva
Florian Reuschel
Savas Vedova
HIJACK
Vinícius Alves
Kareem Dabbeet
Valentín Costa
Ryan Skinner
Alex Hirzel
Ajeet Chaulagain
René Eschke
Nico Devs
Muhammad
Naoki Hamada
Tom
Yann Aufray
Anthony Chu
Nuzhat Minhaz
Lucas Portet
Richard Schloss
Bobby
bpy
Antony Konstantinidis
Hibariya
Jose Seabra
Eze
Florian Lefebvre
Lucas Recoaro
Julien SEIXAS