Categorías
Programación

Nuxt & Vuex – Parte 2. Ejemplo de como crear un módulo y utilizarlo desde el componente.

Esta es la segunda parte del artículo sobre Vuex & NuxtJS en el cual haré un ejemplo básico para ver cómo se utilizan los módulos ya que en la documentación oficial no está muy bien explicado. La primera parte con el video puedes encontrar aquí.

Antes de nada, este ejemplo lo tengo grabado en video, por si te resulta más cómodo ver cómo funciona. Son unos 11 minutos, parte de base del primer ejemplo:

Para crear un módulo Vuex simplemente creamos un archivo dentro de la carpeta «store» de nuestra aplicación NuxtJs, no hace falta colocarlo en la carpeta módulos, debemos olvidar un poco cómo utilizar Vuex en una single app con el framework VueJS puro. Simplemente colocamos un archivo posts.js dentro y NuxtJs se encargará automáticamente de importarlo (no hay que utilizar los trucos de autoload). El contenido del archivo post.js debería de ser algo similar a esto:

A partir de aquí a la hora de utilizarlo por los componentes debemos tener en cuenta el diagrama que adjunto debajo, es decir lo suyo que los componentes solo tengan acceso a «actions» y «getters» desgraciadamente en la realidad no es así (por las limitaciones del lenguaje) y puedes hacer incluso un commit o mutación:

Por ejemplo dentro del método created() del ciclo de vida de una app Vue puedes llamar al getter para obtener todos los posts.js, mientras que en la función fetch() puedes llamar a la acción load para cargar los posts. Este es el componente blog.vue que puedes encontrar en el código fuente.

Todo el código fuente funcional de este ejemplo puedes ver aquí, en mi github personal.

Este ejemplo no es perfecto…

Aunque con módulos tal cual ya te puedes apañar, la cosa se puede complicar un poco más añadiendo un archivo index.js donde colocar nuxtServerInit(). Este archivo index.js será el encargado de controlar a todos los demás módulos, como el anillo de sauron por llamarlo de algún modo. Es decir en el siguiente artículo & video explicare como hacerlo.

Por Antón Zekeriev Rodin

Soy una persona más o menos normal con sus problemas e inquietudes, pero además de ello un ingeniero y desarrollador de Software con unos 10 años de experiencia en el sector. Actualmente intento montarlo por mi cuenta.