Instalación de Vuex con estado único
Clase 40 de 53 • Curso Profesional de Vue.js 2
Contenido del curso
CLI y Dev Tools
- 3

Instalación de Vue.js: Node, Dev Tools y CLI
06:13 min - 4

Crear una aplicación Vue con CLI y webpack
12:49 min - 5

Cómo funciona webpack.config.js
10:38 min - 6

Babel: transpilador de JavaScript moderno
05:06 min - 7

ESLint con Standard JS: linteo automático en webpack
15:34 min - 8

Configuración de Sass y Bulma en Vue
06:18 min - 9

Cómo configurar Pug en Vue con webpack
04:23 min - 10
Diseño de Mockups: Práctica y Colaboración en Comunidad
00:20 min - 11
Creación de Vistas con Mockups y Vue.js
00:32 min
Manipulación del DOM
- 12

Expresiones en Vue: sintaxis doble llave
03:49 min - 13

Diferencia entre v-show y v-if en el DOM
06:22 min - 14

Qué es data binding en Vue.js
04:11 min - 15

Computed properties en Vue.js: cómo crearlas
04:13 min - 16

Qué son los watchers de Vue
02:25 min - 17

Eventos Vue: directiva v-on y métodos format
06:12 min - 18

Cómo construir una interfaz de búsqueda completa en Vue
19:03 min - 19
Manipulación del DOM con Vue.js: Práctica y Ejercicios
03:00 min
REST y HTTP
Sistema de Componentes
- 23

Cómo crear componentes en Vue
08:46 min - 24

Componentes Layout en Vue con Bulma
09:50 min - 25

Reactividad en Vue: $set y Object.assign
06:14 min - 26

Hooks del ciclo de vida en Vue.js
05:38 min - 27

Comunicación padre-hijo con props en Vue
23:27 min - 28

Eventos en Vue: comunicar hijo a padre
12:04 min - 29

Slots: HTML dinámico en componentes Vue
13:42 min - 30

Plugin Event Bus: comunicar componentes sin relación en Vue
19:19 min
Vue Router
Extendiendo VueJS
Clases, Animaciones y Transiciones36
Vuex
- 39

Cómo Vuex centraliza estados en Vue
03:41 min - 40

Instalación de Vuex con estado único
Viendo ahora - 41

Cómo usar mutations y commit en Vuex
08:16 min - 42

Getters de Vuex: mapGetters y store sincronizado
07:35 min - 43

Cómo dispatch ejecuta actions asincrónicas en ViewX
07:54 min - 44

Instalación de Viewex en Platzi Music
26:37 min
Nuxt.js
Deploy a Producción con Now
Conclusiones
Bonus
Centraliza datos, depura con confianza y conecta componentes sin fricción: con estado único, un store y map state, Viewx integra la arquitectura FLUX para que todos los componentes lean la misma fuente de verdad. Aquí verás cómo crear el store, leer el state con computed, usar map state y combinarlo con spread operator.
¿Qué es el estado único y por qué importa?
Tener un origen único de estado significa que toda la información compartida vive en un árbol único de estado dentro del store. Así, cada componente accede a los mismos valores y actualizaciones en tiempo real.
- Facilita localizar información: todo está centralizado en el store.
- Mejora la depuración: las DevTools permiten navegar hacia atrás y adelante entre estados.
- Escala con modularización: Viewx recomienda dividir el estado en módulos en proyectos grandes.
- Arquitectura coherente: se integra naturalmente con FLUX.
¿Cómo se configura el store como origen de la verdad?
El store define el state y las primeras mutations para cambiarlo de forma predecible. Tras instalar Viewx (se menciona versión 2.3.1), se crea un archivo store.js y se registra como plugin.
// store.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const state = { count: 0 } const mutations = { increment(state) { state.count++ }, decrement(state) { state.count-- } } export default new Vuex.Store({ state, mutations })
¿Cómo se conecta el store en main.js?
Se importa y se inyecta en la instancia raíz para que todos los componentes hijos accedan al mismo estado.
// main.js import Vue from 'vue' import App from './App.vue' import store from './store' new Vue({ store, // plugin: origen único de datos para toda la app render: h => h(App) }).$mount('#app')
¿Cómo leer el estado con computed y map state?
La forma más directa de leer el estado en un componente es una computed property que use this.$store.state. Así, cuando el state cambie, la computed se recalcula.
<!-- App.vue (extracto) --> <template> <div> <h2>contador</h2> <p>{{ count }}</p> <div> <button @click="increment">+</button> <button @click="decrement">-</button> </div> </div> </template> <script> export default { computed: { count() { return this.$store.state.count } } } </script>
Para mapear varias propiedades sin escribir computed una por una, Viewx ofrece la función map state de los ES modules.
// App.vue (script) import { mapState } from 'vuex' export default { computed: mapState(['count']) }
¿Qué errores comunes aparecen y cómo diagnosticarlos?
- “is not defined” al importar: revisar mayúsculas/minúsculas en nombres y alias de módulos.
- “Unexpected token” al usar map state: ocurre si se mezcla objeto y función en computed. Solución: reemplazar todo el objeto computed por mapState o combinar correctamente con spread operator.
- Comas y sintaxis: un coma faltante tras data puede romper la compilación; ESLint ayuda a prevenirlo.
- Confirmación visual: en DevTools se ve el binding de count al store.
¿Cómo combinar computed con map state usando spread operator?
Cuando necesitas tus propias computed properties más las del store, usa el spread operator para objetos (...). Así puedes mezclar lo mapeado con map state y tus computed personalizadas.
- El spread operator “expande” propiedades dentro de un nuevo objeto.
- Se relaciona con destructuring: extraes algunas claves y “el resto” queda agrupado.
- Requiere soporte de Babel con un preset avanzado.
Instalación y configuración de Babel para habilitarlo:
npm i -D babel-preset-stage-2
// .babelrc { "presets": [ "stage-2" ] }
Nota: reinicia la compilación de webpack para que tome el cambio de Babel.
Ejemplo combinando map state con computed propias:
<script> import { mapState } from 'vuex' export default { data() { return { test: 'resultado test' } }, computed: { ...mapState(['count']), stringTest() { return this.test } } } </script>
De esta forma, count proviene del store y stringTest es lógica local del componente. Los botones increment/decrement quedan listos para conectarse a mutations.
¿Tienes dudas sobre state, store, map state o spread operator? Deja un comentario con tu caso y lo revisamos juntos.