Integración de VueX y arquitectura Flux en Vue.js

Clase 40 de 53Curso Profesional de Vue.js 2

Resumen

¿Qué es el estado en las aplicaciones Vue?

El estado es un concepto fundamental en Vue que facilita centralizar toda la información relevante de nuestra aplicación. Tener un origen único de estado significa que toda la data crucial está centralizada en un lugar llamado store. Esto no solo simplifica la localización de la información, sino que también facilita la depuración de la aplicación, permitiéndonos navegar a través de diferentes estados para detectar errores rápidamente.

¿Cómo se organiza el estado?

  • Origen único de la verdad: Significa que toda la información importante se gestiona en un único lugar compartido por todos los componentes.
  • Modularización: En aplicaciones grandes, se recomienda dividir el estado en módulos para mejorar la organización y mantenimiento del código.

¿Cómo integrar VueX con Vue?

Para gestionar el estado en Vue, utilizamos VueX, una librería que permite mantener el estado centralizado en un store. A continuación, describimos el proceso para instalar e integrar VueX.

Instalación de VueX

Para empezar a usar VueX, debemos instalarlo usando npm:

npm install vuex --save

Creación del store

Una vez instalado VueX, creamos un archivo store.js dentro de la carpeta src de nuestro proyecto. Este archivo será donde definiremos la lógica del estado central:

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    },
    decrement(state) {
      state.count--;
    }
  }
});

Conectar el store con Vue

Ahora que tenemos nuestro store configurado, debemos importarlo en el archivo main.js y pasar el store al componente principal de Vue:

import Vue from 'vue';
import App from './App.vue';
import { store } from './store';

new Vue({
  el: '#app',
  store,
  render: h => h(App)
});

¿Cómo acceder a las propiedades del store?

Para interactuar con las propiedades del store desde los componentes, utilizamos propiedades computadas (computed properties). Esto nos asegura que cada vez que una propiedad del estado cambia, nuestra interfaz se actualice automáticamente.

Uso de computed properties

Dentro de un componente, definimos una propiedad computada que obtiene el valor desde el store:

computed: {
  count() {
    return this.$store.state.count;
  }
}

Para simplificar la obtención de múltiples propiedades del estado, VueX ofrece un helper llamado mapState:

import { mapState } from 'vuex';

computed: mapState(['count'])

¿Cómo modificar el estado?

En VueX, las modificaciones en el estado se logran mediante mutaciones (mutations). Las mutaciones son funciones que alteran el estado y son llamadas mediante commit.

Ejemplo de mutaciones

mutations: {
  increment(state) {
    state.count++;
  },
  decrement(state) {
    state.count--;
  }
}

Las llamamos desde los componentes con:

methods: {
  increment() {
    this.$store.commit('increment');
  },
  decrement() {
    this.$store.commit('decrement');
  }
}

¿Cómo usar el Spread Operator?

El Spread Operator en JavaScript nos permite combinar propiedades dentro de objetos, lo que es especialmente útil cuando trabajamos con VueX y queremos integrar varias computed properties o actions dentro de un componente.

Uso del Spread Operator con Babel

Para utilizar esta funcionalidad novedosa, es necesario configurar Babel con el preset adecuado y asegurarnos de que el código sea compatible:

  1. Instalar el preset:

    npm install babel-preset-stage-2 --save-dev
    
  2. Configurar Babel:

    Edita el archivo .babelrc para incluir el nuevo preset:

    {
      "presets": ["env", "stage-2"]
    }
    
  3. Utilizar el Spread Operator:

    computed: {
      ...mapState(['count']),
      customComputed() {
        // Your custom computed logic
      }
    }
    

Con el Spread Operator y VueX, puedes manejar el estado de manera mucho más eficiente dentro de tus componentes, mezclando sin problemas las propiedades del store con las computadas personalizadas. ¡Sigue explorando y mejorando tus habilidades con Vue y VueX!