🔎 Search Component
Vamos a crear nuestro propio componente en un nuevo archivo .vue
. Luego lo vamos a integrar con el componente principal App.vue
. Dentro de este nuevo componente vamos a hacer uso del método search
de nuestro servicio spotify
.
Search.vue
- Para organizar mejor nuestra app vamos a crear dentro de
src
una carpeta llamadacomponents
donde a partir de ahora vamos a guardar todos los componentes que creemos. Esto es simplemente para seguir mejorando la estructura de nuestra aplicación y que elApp.vue
quede separado del resto. Una vez hecho esto creamos nuestro componenteSearch.vue
➡️src/components/Search.vue
Es una buena práctica mantener los nombres de los componentes en PascalCase, para el resto de los archivos vamos a utilizar siempre kebab-case.
- Abrimos el archivo que creamos y le agregamos el siguiente código base:
<template lang="html">
<!-- ⚠️ Este div es importante: todos los componentes deben tener un unico elemento principal -->
<div>
<input type="text">
<button type="button">Search</button>
<ul>
<li></li>
</ul>
</div>>
</template>
<script>
export default {
name: 'Search'
}
</script>
- Ya es momento de empezar a utilizar los conceptos que aprendimos sobre Vue. Vamos a realizar las siguientes tareas dentro de
Search.vue
:- Creamos la función
data
(recuerden que devuelve un objeto). Con una propiedad llamadaquery
y la inicializamos con unString
vacío. también agregamos otra propiedad con el nombreresults
y le asignamos unArray
vacío. - Creamos el objeto
methods
y agregamos una función con el nombresearch
. Por el momento esta función permanece vacía o bien pueden agregarle unconsole.log()
para testear más adelante. - En la parte HTML definimos un
input
, necesitamos relacionarlo a la propiedadquery
de nuestro componente usandov-model
. - Seguimos en el HTML, tenemos que usar
v-on
(o@
) para que cada vez que hagamos click en el botón "Search" se ejecute nuestro métodosearch
. - Por ultimo podemos modificar nuestro método
search
para que con unconsole.log
mostremos el valor de la propiedadquery
. Recuerden la manera podemos acceder a las propiedades delvm
dentro de los métodos.
- Creamos la función
- Ya tenemos la estructura base de nuestro componente. Nos falta insertarlo en la aplicación. Para eso tenemos que importarlo en el componente donde queremos utilizarlo. En nuestro caso
App.vue
. Aprovechamos también para limpiar el componente y sacar todo lo que genera el CLI a modo de ejemplo:
<template>
<div id="app">
<h1>📻 vue-music</h1>
<hr>
<search></search> <!-- insertamos el componente search -->
</div>
</template>
<script>
// Importamos el componente de search
import Search from './components/Search.vue'
export default {
name: 'app',
// Le indicamos al component App que puede disponer de un componente llamado Search
components: { Search }
}
</script>
Esta sintaxis:
components: { Search }
se corresponde con ES2015 y equivale a hacercomponents: { Search: Search }
. El nombre de la propiedad es el nombre con el que luego podemos escribir el tag en HTML. Por ejemplo, si escribimoscomponents: { Buscar: Search }
, en HTML representaríamos nuestro tag como<buscar></buscar>
.En el caso que sea un component con mas de una palabra la manera correcta de declararlo seria:
components: { AcaBuscamos: Search }
y luego en HTML<aca-buscamos></aca-buscamos>
. Vue se encargar de parsear la sintaxis PascalCase de JS y usarla como kebab-case en HTML.
Es momento de probar si nuestro código funciona. Recuerden que no es necesario reiniciar la aplicación ni volver a ejecutar el comando npm run dev
(salvo que lo hayamos interrumpido nosotros). Podemos refrescar el browser y testear clickeando que el botón de "Search".