Les aconsejo leer esto: 👀
Se puede realizar la configuración de un store pasandole una función de configuración en vez de un objeto de opciones. Esta sintaxis de función brinda mucha más flexibilidad que la de un objeto de opciones, ya que podemos crear watchers dentro de un store y usar libremente cualquier Composable.
Esto:
// Sintaxis de objeto de opciones
export const useCounterStore = defineStore('counter', {
state: () => ({ count: 0 }),
getters: {
double: (state) => state.count * 2,
},
actions: {
increment() {
this.count++
},
},
})
Es lo mismo que esto:
// Sintaxis de función de configuración
export const useCounterStore = defineStore('counter', () => {
const count = ref(0)
function increment() {
count.value++
}
return { count, increment }
})
¿Qué sintaxis debo elegir?
Al igual que pasa con la API de Vue, entre la Options API y la Composition API, elije el que te resulte más cómodo. Si no estás seguro, prueba primero con la sintaxis de tipo objeto.
A mi personalmente me gusta más la de tipo configuración, pues yo programo más usando la Composition API y me resulta muy similar su sintaxis. A demás que me da muchas más flexibilidad a la hora de hacer funciones complejas.
En store de sintxis de función:
-
ref()s se convierten en propiedades de state
-
computed() se convierte en getters
-
function() se convierte en actions
Les dejo el ejemplo de como se escribiria el store de profile.js en sintaxis de configuración usando una función:
import { defineStore } from "pinia";
import { ref } from "vue";
export const useProfileStore = defineStore("profile", () => {
const id = ref(1);
const username = ref("amethgabriel1991");
const avatar = ref("/avatars/avatar-02.jpg");
const status = ref("active");
return { id, username, avatar, status };
});
El uso en los archivos de las vistas es exactamente el mismo.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?