De acuerdo, hemos visto algunas formas de acceder a nuestro estado de Pinia. Ahora, ¿cómo mutamos ese estado? Como recordatorio, cuando vemos cómo funcionaba Vuex, cuando mutábamos el estado, enviábamos una acción, esa acción luego procedía a realizar una mutación. Y esta era realmente la única forma recomendada de mutar el estado, a menos que tal vez estuviéramos rompiendo ese patrón y esas prácticas recomendadas. Pero por supuesto, Pinia es diferente. Ya no tenemos ese paso de mutación, y ahora tenemos mucha más flexibilidad en cómo actualizamos nuestro estado.
La forma más común de mutar el estado en Pinia es desencadenar una acción en esa tienda, lo que provoca que ese estado cambie. En este ejemplo, hacer clic en el botón Agregar a favoritos desencadena la acción Agregar a favoritos en la tienda de Favoritos. Ahora, a algunas personas les sorprende saber que esta no es la única forma de cambiar y mutar el estado en Pinia. También podemos cambiar el estado directamente asignando un nuevo valor a la propiedad de estado. En este ejemplo, tenemos un observador en el valor de la ciudad, y luego, si el usuario elimina la ciudad, borramos directamente esas propiedades de estado para que el usuario pueda realizar una nueva búsqueda.
Otra forma de actualizar el estado es usar el método patch de Pinia. Esto nos permite aplicar múltiples cambios al mismo tiempo en el estado de una tienda. Aquí, observa cómo pasamos un objeto con las propiedades de estado actualizadas dentro de él. Ahora, el uso de patch tiene algunos beneficios adicionales porque creará una única entrada en las herramientas de desarrollo, y si seguimos esta convención en toda nuestra aplicación, podríamos buscar fácilmente patch para localizar todos los lugares dentro de nuestra aplicación donde estamos actualizando el estado en bloque de esta manera. Otra cosa útil a tener en cuenta sobre patch es que puede tomar un objeto o una función como parámetro. Por ejemplo, si nuestra propiedad de estado fuera un array, podríamos usar métodos de array para actualizar nuestro estado en consecuencia.
Convenientemente, Pinia también ofrece un método reset. Por lo tanto, podemos restablecer todo el estado de una tienda a su valor inicial. En este ejemplo, el método reset se utiliza dentro de la propia tienda para borrar el estado de nuestra tienda de autenticación. Observa cómo estamos en una tienda de opciones, por lo que estamos usando this. También podemos usar reset en un componente de esta manera. Usar el método reset de esta manera es muy útil cuando queremos actualizar una tienda completa de una vez, como cuando un usuario navega a una página determinada. Por ejemplo, veamos este ejemplo en el archivo del enrutador donde usamos el método reset de Pinia en el propio enrutador. Aquí estamos diciendo que cada vez que el usuario regrese a la página de inicio, borre esa búsqueda anterior. Ahora, desafortunadamente, el método reset no está disponible en las tiendas de configuración, por lo que esta es una de las formas en las que la tienda de opciones definitivamente tiene una ventaja sobre la tienda de configuración. Y si te preguntas por qué es así, es porque el método reset depende de la función de estado para crear un estado nuevo, reemplazando el estado actual de la tienda por uno nuevo. Pero no tenemos acceso a la función de estado en una tienda de configuración. Pero si aún quieres esa funcionalidad donde restableces una tienda completa, pero es una tienda de configuración, por lo que no puedes usar un método reset, puedes escribir tu propia función de configuración que logre lo mismo, donde escribas una acción que restablezca toda la tienda, como se muestra aquí. En cuanto a la mutación de nuestro estado, Pinia también ofrece un método útil que podemos usar para obtener información detallada sobre nuestras acciones. Este se llama el método onAction.
Comments