Dados e Métodos de Componentes no Vue.js
No Vue.js, os componentes podem armazenar dados internos por meio da propriedade data()
methods
Propriedade data()
A função data()
counter
header
template
<!DOCTYPE html>
<html>
<head>
<title>Componentes Vue.js</title>
<meta charset="utf-8" />
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<div id="app">
<counter></counter>
</div>
<script>
const app = Vue.createApp({});
app.component('counter', {
data() {
return {
header: 'Counter Program'
};
},
template: '<div><h2>{{ header }}</h2></div>'
});
app.mount('#app');
</script>
</body>
</html>
Os dados do componente são definidos dentro da função data()

Esse conceito também se aplica a componentes registrados localmente. Em vez de serem registrados globalmente, são passados para a propriedade components dentro da configuração da aplicação:
Esse conceito também se aplica a componentes registrados localmente. Em vez de serem registrados globalmente, são passados para a propriedade components
<div id="app">
<counter></counter>
</div>
<script>
const comp = {
template: '<div><h2>{{ header }}</h2></div>',
data() {
return {
header: 'Counter Program'
};
}
};
const app = Vue.createApp({
components: {
'counter': comp
}
});
app.mount('#app');
</script>
Caso a aplicação e um componente definam uma propriedade com o mesmo nome, o componente sempre utilizará seu próprio valor, sem sobrescrever o da aplicação. No exemplo abaixo, tanto a aplicação quanto o componente counter
header
<!DOCTYPE html>
<html>
<head>
<title>Componentes Vue.js</title>
<meta charset="utf-8" />
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<div id="app">
<h2>{{ header }}</h2>
<counter></counter>
</div>
<script>
const comp = {
template: '<div><h3>{{ header }}</h3></div>',
data() {
return {
header: 'Component Header'
};
}
};
const app = Vue.createApp({
data() {
return {
header: 'App Header'
};
},
components: {
'counter': comp
}
});
app.mount('#app');
</script>
</body>
</html>
Nesse caso, o componente counter
Component Header
App Header

Métodos
Além de armazenar dados internos, os componentes podem definir métodos na propriedade methods
<!DOCTYPE html>
<html>
<head>
<title>Componentes Vue.js</title>
<meta charset="utf-8" />
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<div id="app">
<counter></counter>
</div>
<script>
const app = Vue.createApp({});
app.component('counter', {
data() {
return {
header: 'Counter Program',
count: 0
};
},
template: `<div>
<h2>{{ header }}</h2>
<button v-on:click="increase">+</button>
<span>{{ count }}</span>
</div>`,
methods: {
increase() {
this.count++;
}
}
});
app.mount('#app');
</script>
</body>
</html>
Quando o botão é clicado, o evento v-on:click
increase
count