Contenido del curso
Conceptos básicos
Organización de código
Modelo de datos
Cierre del curso
State
Contenido del curso
State
Ameth Ordoñez Erazo
EstudianteJonathan Leo Castro García
EstudianteUriel Solis Salinas
EstudianteAndrés Martínez González
EstudianteJose Alejandro Pantoja Giraldo
EstudianteDeyvi Rosado Diaz
EstudianteAmeth Ordoñez Erazo
EstudianteEn composition API no es necesario utilizar el mapState, pues ya en Vue3 y Vue4, la composition API provee para Vuex poder utilizar directamente una propiedad computada reactiva que reemplaza a $store.state:
Gracias por el aporte, estaba buscando esta sintaxis con el.
<script setup> me sirvió de mucho saludosState
El state se refiere al objeto que contiene el estado centralizado de la aplicación. Este estado se puede acceder y actualizar desde cualquier componente de la aplicación que esté utilizando Vuex. . El objeto state es una instancia reactiva, lo que significa que cualquier cambio que se realice en el objeto será automáticamente reflejado en cualquier componente que esté utilizando ese estado. . Para definir el objeto state en Vuex, se crea un objeto JS en el archivo index.js (o cualquier otro archivo donde se defina el store de Vuex) y se exporta como un módulo Vuex. El objeto state en Vuex es un objeto plano de JS que contiene las propiedades del estado de la aplicación.
Por ejemplo, si se quiere almacenar el nombre y la edad de un usuario en el objeto State, se podría definir así;
import { createStore } from "vuex"; const store = createStore({ state: { usuario: { nombre: "", edad: 0 } } }) export default store;
En este ejemplo, el objeto State contiene una propiedad llamada "usuario", que es un objeto que tiene dos propiedades: "nombre" y "edad".
.
Para acceder a los valores del objeto State desde las props de un componente, primero se debe importar la función **mapState** de Vuex. Luego, se utiliza la función mapState para mapear el objeto State a las propiedades computadas del componente.
.
Para acceder al valor de "nombre" del objeto State en las props de un componente, se podría hacer lo siguiente:
<template> <div> <p>Nombre: {{ nombre }}</p> </div> </template> <script> import { mapState } from 'vuex' export default { props: { // Props del componente }, computed: { ...mapState({ nombre: state => state.usuario.nombre }) } } </script>
En este ejemplo, se utiliza la función mapState para mapear la propiedad "nombre" del objeto State a una propiedad computada del componente llamada "nombre". Luego, se utiliza la propiedad "nombre" en el template del componente para mostrar el valor del nombre del usuario.
.
Otra forma sería dentro del template:
<!-- como contenido --> <p> {{ $store.state.usuario.nombre }} </p>
Formas de acceder a variables del store:
Desde el template
<p><!-- como contenido --> {{ $store.state.variable }} </p> <!-- como atributo de una etiqueta --> <tag :attr="$store.state.variable" />
Desde variables computadas con la sintaxis OptionsApi
import { mapState } from "vuex"; export default { computed: { // opción 1 variable() { return this.$store.state.variable; }, // opción 2 ...mapState({ variable: (state) => state.variable }), // opción 3 (alias) ...mapState(["variable"]), }, };
Simplificacion en su maxima expresion
computed: { ...mapState(['username']) }
En Vue 3 composition api y Vuex4, se crea el store y se agrega como un plugin al momento de montar la aplicación.
Ya no se usa mapState.
Otra forma de darle un alias a las propiedades de mapState es usando un string.
Esto:
computed: mapState({ username: (state) => state.username })
Es lo mismo que esto:
computed: mapState({ username: 'username' })
Pasando la cadena de texto 'username' es lo mismo que decir state => state.username