O Gatilho Fetch
O gatilho fetch serve para requisição assíncrona de dados. Ele é chamado no lado do servidor quando estiver renderizando a rota, e no lado do cliente quando estiver navegando entre as rotas.
Em versões do Nuxt maiores ou igual 2.12
A versão 2.12 do Nuxt introduz um novo gatilho chamado fetch o qual você pode usar dentro de qualquer um de seus componentes de Vue. Use o fetch toda vez que você precisar receber dados assíncronos. O fetch é chamado no lado do servidor quando estiver renderizando a rota, e no lado do cliente quando estiver navegando entre as rotas.
Ele expõe o $fetchState no nível de componente:
-
$fetchState.pending:Boolean, permite você mostrar um segurador de espaço quando ofetchestiver sendo chamado no lado do cliente. -
$fetchState.error:nullouError, permite você mostrar uma mensagem de erro -
$fetchState.timestamp:Integer, é uma referência a data e hora da última requisição, útil para cacheamento com okeep-alive
Se você quiser chamar o gatilho fetch a partir do seu modelo, use:
<button @click="$fetch">Refresh</button>
ou método de componente:
// a partir de métodos de componente na secção de roteiro (script)
export default {
methods: {
refresh() {
this.$fetch()
}
}
}
Você pode acessar o contexto do Nuxt dentro do gatilho fetch usando o this.$nuxt.context.
Opções
-
fetchOnServer:BooleanouFunction(valor padrão:true), chama ofetch()quando o servidor estiver renderizando a página -
fetchKey:StringouFunction(padroniza para identificador do escopo de componente ou nome de componente), uma chave (ou uma função que produz uma chave única) que identifica o resultado da requisição deste componente(disponível desde a versão 2.15 do Nuxt) Mais informações estão disponíveis na PR original . -
fetchDelay:Integer(valor padrão:200), define em milissegundos o tempo mínimo de execução (para evitar piscadelas)
Quando o fetchOnServer for falso (false ou retornar false), o fetch será chamado apenas no lado do cliente e o $fetchState.pending retornará true quando o servidor estiver renderizando o componente.
<script>
export default {
data() {
return {
posts: []
}
},
async fetch() {
this.posts = await this.$http.$get('https://api.nuxtjs.dev/posts')
},
fetchOnServer: false,
// vários componentes podem retornar o mesmo `fetchKey` e o Nuxt rastreará ambos eles separadamente
fetchKey: 'site-sidebar',
// alternativamente, para mais controle, uma função pode ser passada com o acesso à instância do componente
// Ela será chamada dentro do gatilho `created` e não deve depender de um dado requisitado
fetchKey(getCounter) {
// `getCounter` é um método que pode ser chamado para receber o próximo número dentro de uma sequência
// como parte de geração de uma `fetchKey` única.
return this.someOtherData + getCounter('sidebar')
}
}
</script>
Clément Ollivier
Daniel Roe
Alex Hirzel
Ajeet Chaulagain
René Eschke
Sébastien Chopin
Nico Devs
Muhammad
Nazaré da Piedade
Naoki Hamada
Tom
Yann Aufray
Anthony Chu
Nuzhat Minhaz
Lucas Portet
Richard Schloss
Xanzhu
bpy
Antony Konstantinidis
Hibariya
Jose Seabra
Eze
Florian LEFEBVRE
Lucas
Julien SEIXAS
Hugo
Sylvain Marroufin
Spencer Cooley
Piotr Zatorski
Vladimir Semenov
Harry Allen
kazuya kawaguchi
Unai Mengual
Hyunseung Lee
Alexandre Chopin
pooya parsa
Nick Medrano
Mosaab Emam
Iljs Путлер Капут
Heitor Ramon Ribeiro
Nero
Yoon Han
Ikko Ashimine
FamCodings
Ayouli
F. Hinkelmann
felipesuri
Christophe Carvalho Vilas-Boas
Leoš Literák
Trizotti
Marcello Bachechi
Rodolphe
Thomas Underwood
Shek Evgeniy
Lukasz Formela
Hugo Torzuoli