# Components
Para se usar um componente bastar importar ele, declarar em components e depois usar.
<template>
<div>
<ComponenteUm></ComponenteUm>
<componente-um></componente-um>
<ComponenteDois />
<componente-dois/>
</div>
</template>
<script>
const ComponenteUm = () => import('@/components/ComponenteUm')
const ComponenteDois = () => import('@/components/ComponenteDois')
export default {
name: 'App',
data () {
return {
}
},
components: {
ComponenteUm,
ComponenteDois
}
}
</script>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Para passar valor por meio das propriedades
<template>
<div>
<ComponenteUm :valores='valor' :novo="novoArray" outraProp="valor qualquer" :soma="{ 10 + 5}" />
</div>
</template>
<script>
const ComponenteUm = () => import('@/components/ComponenteUm')
export default {
name: 'App',
data () {
return {
valor: 10,
novoArray: [10, 20, 30]
}
},
components: {
ComponenteUm
}
}
</script>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Quando for passar valores para as propriedades de um componente, se o valor vou um dado, variavel, computed ou javascript por meio de {}, usa o : na frente do nome da prorpriedade, caso contrario é somente passar o valor.
# Nomenclatura
BASE: Componentes que se aplicam a estilos e convenções especificas da aplicação.
Devem ser declarados com base, app ou v no começo do nome.
Por exemplo:
- MeuInput.vue
- MeuBotao.vue
- Icone.vue
- ...
Estes anteriores seriam formas ruins de declarar componentes base.
Uma boa forma seria:
base
- BaseInput.vue
- BaseBotao.vue
- BaseIcon.vue
app
- AppInput.vue
- AppBotao.vue
- AppIcon.vue
v
- VInput.vue
- VBotao.vue
- VIcon.vue
INSTANCIA UNICA: Componentes que devem ter apenas uma instancia dentro de cada pagina. Por exemplo em uma pagina X que tenha um rodape, logo você não tem dois rodapes ou dois componentes sendo declarados.
- Rodape.vue
- Menu.vue
- MySidebar.vue
Uma boa forma seria:
- TheRodape.vue ou TheFooter.vue
- TheMenu.vue
- TheSidebar.vue
ORDEM DAS PALAVRAS: Devem começar com a palavra de mais alto nivel e terminar com palavras que descrevem modificações.
- GeneroCheckbox.vue
- PesquisaInput.vue
- LimparPesquisaBotao.vue
- RodarPesquisaBotao.vue
Uma boa forma seria:
- SetaCheckboxGenero.vue
- PesquisaInput.vue
- BotaoLimparPesquisa.vue
- BotaoPesquisa.vue
Ou separando por grupo e ação
- PesquisaBotaoLimpar.vue
- PesquisaBotao.vue
- PesquisaInput.vue
# Globalmente
Para declarar um componente globalmente, no arquivo main.js
import Vue from 'vue'
...
import Componente from '@/components/Componente'
Vue.component('nome-componente', Componente)
...
new Vue({
...
render: h => h(App),
}).$mount('#app');
2
3
4
5
6
7
8
9
10
11
12
Para nao sobrecarregar o main.js podemos criar um arquivo chamado index.js no diretorio components e colocar este conteudo
import Vue from 'vue'
import Componente from '@/components/Componente'
import Componente2 from '@/components/Componente2'
Vue.component('nome-componente', Componente)
Vue.component('nome-componente2', Componente2)
2
3
4
5
6
E no main.js importar este arquivo
import Vue from 'vue'
...
import '@/components'
...
new Vue({
...
render: h => h(App),
}).$mount('#app');
2
3
4
5
6
7
8
9
10
← Lifecycle hooks Props →