Getters de Vuex: mapGetters y store sincronizado
Clase 42 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
17:32 min - 41

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

Getters de Vuex: mapGetters y store sincronizado
Viendo ahora - 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
Los getters de Vuex permiten acceder al estado con lógica personalizada de forma limpia y reutilizable. Aquí verás cómo crear un getter para duplicar un contador, cómo usar mapGetters en componentes y cómo el store centralizado mantiene sincronizados varios componentes. También se ilustra el uso de Vue Devtools para inspección, time travel, revert y commit.
¿Qué resuelven los getters en Vuex?
Los getters actúan como wrapper del estado para exponer valores derivados sin repetir lógica en cada componente. En lugar de calcular “count por dos” en muchos lugares, defines un único getter y todos los componentes lo consumen como una propiedad reactiva.
¿Qué es un getter y por qué evita duplicar lógica?
- Es una función dentro de getters que devuelve un valor derivado del state.
- Centraliza la lógica: evitas repetir cálculos en múltiples componentes.
- Recibe por parámetro el state y, si hace falta, el objeto getters para encadenar otros getters.
¿Cómo accedo a un valor derivado sin paréntesis?
- Se usa como propiedad reactiva: this.$store.getters.getDouble.
- Importante: no se invoca como función, no lleva paréntesis.
¿Cómo implementar getters y mapGetters en el store y componentes?
Crear el getter es directo y su consumo puede ser manual o con mapGetters cuando hay varios.
¿Cómo crear el getter getDouble en el store?
- Define el objeto getters y agrega una función que reciba state (y opcionalmente getters).
- Retorna el valor derivado, por ejemplo, el doble de count.
// store.js export default new Vuex.Store({ state: { count: 0 }, getters: { getDouble(state, getters) { return state.count * 2; } } });
Puntos clave:
- El primer parámetro es state; el segundo, getters, permite reutilizar otros getters.
- La lógica vive en el store, no en los componentes.
¿Cómo usar computed con $store.getters?
- Crea una propiedad computada que retorne this.$store.getters.getDouble.
- Úsala en el template como cualquier dato reactivo.
<!-- App.vue (acceso directo) --> <template> <div> <p>{{ double }}</p> </div> </template> <script> export default { computed: { double() { return this.$store.getters.getDouble; // sin paréntesis } } }; </script>
Buenas prácticas mencionadas:
- Elimina datos innecesarios en data y strings de prueba para evitar ruido.
- Un linter ayuda a detectar detalles como comas faltantes en objetos.
¿Cuándo aplicar mapGetters con varios getters?
- Cuando tienes muchos getters, usa mapGetters para declarar menos código repetido.
<!-- App.vue (con mapGetters) --> <template> <div> <p>{{ getDouble }}</p> </div> </template> <script> import { mapGetters } from 'vuex'; export default { computed: { ...mapGetters(['getDouble']) } }; </script>
Claves de uso:
- Se pasa un arreglo de strings con los nombres definidos en el store.
- El nombre mapeado mantiene el mismo identificador del getter.
¿Cómo se sincronizan varios componentes con el store centralizado?
Duplicar la UI en un componente child muestra cómo el store es el origen único de la información y propaga cambios a todos los que lo usan.
¿Qué pasa al duplicar App en un componente child?
- Crea un componente child con la misma lectura del getter.
- Impórtalo con ruta relativa (sin alias @ disponible) y regístralo en components.
- Cambia el nombre interno a "child" para distinguirlo en herramientas.
<!-- Child.vue --> <template> <main> <p>{{ getDouble }}</p> </main> </template> <script> import { mapGetters } from 'vuex'; export default { name: 'child', computed: { ...mapGetters(['getDouble']) } }; </script>
<!-- App.vue (uso del child) --> <template> <div> <p>{{ getDouble }}</p> <div> <child /> </div> </div> </template> <script> import { mapGetters } from 'vuex'; import Child from './Child.vue'; // sin alias *@* export default { name: 'app', components: { Child }, computed: { ...mapGetters(['getDouble']) } }; </script>
Resultados observables:
- Al actualizar desde uno, se refleja en el otro de inmediato.
- Ambos consumen el mismo store: el origen es único y los cambios se propagan hacia abajo.
- Pequeños errores (como una coma faltante en components) se detectan fácil con un linter.
¿Qué muestra Vue Devtools sobre eventos y time travel?
- Permite ver eventos y mutaciones con detalles.
- Se puede hacer time travel, revert y commit del estado desde la herramienta.
- Útil para inspeccionar sincronización entre padre e hijo usando los mismos bindings.
¿Tienes dudas o ejemplos de getters que quieras aplicar, como formateos o filtros? Cuéntalo en los comentarios y enriquezcamos las ideas entre todos.