Diretório de Componentes
O diretório components contém os nossos componentes .vue. Os componentes constituem as diferentes partes da nossa página e podem ser reutilizados e importados para as nossas páginas, disposições e até para os outros componentes.
Requisição de dados
Para acessar dados assíncronos duma interface de programação de aplicação nos nossos componentes, podemos usar fetch() da Nuxt.
Ao verificar $fetchState.pending, podemos mostrar uma mensagem quando os dados estiverem à espera de serem carregados. Também podemos verificar $fetchState.error e mostrar uma mensagem de erro se houver um erro na obtenção dos dados. Ao utilizar a fetch, devemos declarar as propriedades corretas em data(). Os dados provenientes da obtenção de dados podem então ser atribuídos as estas propriedades:
<template>
<div>
<p v-if="$fetchState.pending">Loading....</p>
<p v-else-if="$fetchState.error">Error while fetching mountains</p>
<ul v-else>
<li v-for="(mountain, index) in mountains" :key="index">
{{ mountain.title }}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
mountains: []
}
},
async fetch() {
this.mountains = await fetch(
'https://api.nuxtjs.dev/mountains'
).then(res => res.json())
}
}
</script>
fetch() por mais detalhes sobre como a obtenção de dados funciona.Descoberta de Componentes
Desde a versão v2.13, a Nuxt pode importar automaticamente os componentes que usamos. Para ativar esta funcionalidade, definir components: true na nossa configuração:
export default {
components: true
}
Quaisquer componentes no diretório ~/components podem então ser usados em todas as nossas páginas, disposições (e outros componentes) sem a necessidade de importá-los explicitamente:
| components/
--| TheHeader.vue
--| TheFooter.vue
<template>
<div>
<TheHeader />
<Nuxt />
<TheFooter />
</div>
</template>
Importações Dinâmicas
Para importar dinamicamente um componente, também conhecido como carregamento preguiçoso de um componente, tudo o que precisamos de fazer é adicionar o prefixo Lazy nos nossos modelos de marcação de hipertexto:
<template>
<div>
<TheHeader />
<Nuxt />
<LazyTheFooter />
</div>
</template>
Ao utilizar o prefixo lazy, também podemos importar dinamicamente um componente quando um evento é acionado:
<template>
<div>
<h1>Mountains</h1>
<LazyMountainsList v-if="show" />
<button v-if="!show" @click="show = true">Show List</button>
</div>
</template>
<script>
export default {
data() {
return {
show: false
}
}
}
</script>
Diretórios Encaixados
Se tivermos componentes em diretórios encaixados tais omo:
components/
base/
foo/
CustomButton.vue
O nome do componente será baseado no seu próprio caminho, diretório e nome de ficheiro. Por conseguinte, o componente será:
<BaseFooCustomButton />
Se quisermos usá-lo como <CustomButton /> mantendo a estrutura de diretório, podemos adicionar o diretório do CustomButton.vue no nuxt.config.js:
components: {
dirs: [
'~/components',
'~/components/base/foo'
]
}
E agora podemos usar <CustomButton /> em vez de <BaseFooCustomButton />:
<CustomButton />
components por outros métodos de controlo do nome do componente.
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