Gestión de Estado Moderna con Vue 3

Rate this content
Bookmark

La Reactividad de Vue 3 y la API de Composición ofrecen a los desarrolladores técnicas flexibles para trabajar con datos reactivos. Permiten un nuevo y moderno enfoque para manejar la Gestión de Estado. Los desarrolladores ahora pueden implementar tiendas locales y globales sin esfuerzo. Vuex ha sido uno de los plugins de primera parte más utilizados para Vue 2. Echemos un vistazo a las ventajas y desventajas de usar Composables en lugar de Vuex.

This talk has been presented at Vue.js London Live 2021, check out the latest edition of this JavaScript Conference.

FAQ

Vue Free es una forma de utilizar Vue sin la Options API ni VueX, explotando las capacidades de la Composition API para manejar el estado y la lógica de los componentes de manera más eficiente y organizada.

La Composition API permite una mejor organización del código al agrupar la lógica relacionada en bloques reutilizables, facilita el manejo de estados complejos y mejora la reusabilidad y mantenibilidad del código en aplicaciones Vue.

No es estrictamente necesario usar Vuex con Vue 3, ya que la Composition API proporciona herramientas poderosas para manejar el estado de la aplicación de manera efectiva, permitiendo incluso la gestión de estado global sin Vuex.

Para migrar un componente de Vue 2 a Vue 3 usando la Composition API, debes reorganizar el código para utilizar la función 'setup' donde puedes definir la lógica reactiva y los datos del componente, reemplazando la estructura de objeto típica de la Options API.

El estado local se maneja definiendo reactivos dentro de la función 'setup' de cada componente. Para el estado global, puedes crear composables que manejen y expongan el estado y sean importados y utilizados por varios componentes, asegurando una única fuente de verdad.

Un 'composable' es una función reutilizable en Vue que encapsula una parte de la lógica del componente, como la gestión de estado o efectos secundarios. Los composables se utilizan dentro de la función 'setup' de la Composition API para organizar y compartir lógica entre componentes.

Se recomienda usar composables para manejar el estado en Vue 3 sin Vuex. Esto involucra crear funciones que encapsulan la lógica del estado y que pueden ser reutilizadas en diferentes componentes, permitiendo una gestión más flexible y modular del estado.

Vanessa Otto
Vanessa Otto
22 min
21 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Vanessa presenta Vue Free y discute los beneficios de usar la API de Composición. Se explica el orden de ejecución y agrupación de unidades lógicas utilizando la API de Composición. La API de Composición se utiliza para la gestión de estado y refactorización de componentes. El orador comparte su experiencia inicial con la gestión de estado usando Vuex. Los Composables se exploran como una alternativa para la gestión de estado en Vue 3.

1. Introducción a Vue Free y la Composition API

Short description:

En esta parte, Vanessa presenta Vue Free, una potente solución de gestión de estado para aplicaciones Vue. Comparte su experiencia de usar Vue Free sin Options API y Vuex, aprovechando en su lugar la Composition API. Vanessa explica los beneficios de la Composition API y cómo se puede utilizar en aplicaciones pequeñas. También discute las tres API en Vue: options API, reactivity API y composition API, destacando las ventajas de la composition API. Finalmente, proporciona un resumen de cómo escribir un componente en Vue 2 o Vue 3 utilizando la options API.

Hola, ahora vamos a hablar sobre la gestión de estado moderna con Vue Free.

Hola, soy Vanessa. Puedes encontrarme en línea como Vanze. Soy responsable del front end en Cevy. Soy coanfitriona de dos podcasts diferentes, Expect Exception, donde hablamos sobre pruebas de front-end testing y Working Draft, un podcast alemán sobre web development. Y hace aproximadamente un año, en septiembre de 2020, recuerdo que estaba allí viendo a Avenu en la conferencia de Vue JS, finalmente diciendo, hey, Vue Free está ahí fuera, y ahora quiero que vayas conmigo en el viaje, cómo instalé Vue Free y usé conceptos alternativos para usar Vue Free completamente sin Options API y también sin VueX. No sugiero que debas usar Vue Free sin Options API o reemplazar VueX. Quiero decirte que la Composition API es tan poderosa que realmente podemos usar Vue sin ambas herramientas, y tenía sentido para mí en un estado en el que tenía una aplicación realmente pequeña que comencé con Vue Free desde cero y no tuve que migrar desde mi aplicación Vue2.

En los ejemplos de code que mostraré en los próximos minutos, usaré la función de configuración y prefiero use ref sobre reactive. Pero todo lo que mostraré ahora, por supuesto, puedes usar el azúcar sintáctico de configuración de script en su lugar y puedes elegir usar reactive en lugar de ref si lo prefieres.

Como mis componentes de mi muy pequeña aplicación Vue Free hace aproximadamente un año comenzaron a crecer porque tenía algunos problemas más complejos que necesitaban algunas soluciones más complejas, yo y por lo tanto también esta charla fueron inspirados principalmente por estos tres artículos. Agrupar, extraer patrón compartido, state management con composition API, y ¿deberías usar composition API como un reemplazo para Vuex.

Enfoquémonos en tres de las API de Vue por ahora, la options API, reactivity API, y composition API. La options API, podemos pensar en esta estructura de objeto que conocemos de nuestras aplicaciones de un solo archivo en Vue2, donde tenemos nuestros data computed, methods, watch mounted, y muchos más. Y la reactivity API no es tan diferente de eso. Tenemos refReactive para data reactive computed, watch, watch effect, unmounted, y muchos más. Pero la clave es que ahora puedo importar esas funciones directamente de Vue. No tengo que usar un componente de archivo único de Vue o un Mixon para usar esas herramientas. Puedo importarlas en cualquier archivo de JavaScript o TypeScript. Y luego la composition API nos proporciona una función de configuración donde puedo reunir toda la magia y usar todas esas poderosas herramientas de la Reactivity API en mi componente de Vue.

Así que hagamos un resumen de cómo escribir un componente en Vue 2 o en Vue 3 usando las opciones. Aquí tengo una plantilla con un párrafo con saludo y nombre completo. Si desplazo hacia abajo hasta mi bloque de script, puedo ver aquí que tengo una función de data, que está devolviendo un objeto con saludo y hola. Tengo propiedades para el primer nombre y el apellido. Y tengo una propiedad computada para el nombre completo, que me devuelve un primer nombre con un espacio y el apellido. Así que este es un componente con un solo propósito, que hace su trabajo bastante bien. Una nota lateral bastante divertida es que inicialicé este saludo aquí como un atributo de data reactivo, aunque en realidad nunca lo cambio y no necesito estos observadores en él de todos modos. Pero nunca estuve seguro de dónde poner estas constantes usando la options API. El problema en el que ahora quiero centrarme es que las unidades lógicas, si el componente está creciendo y creciendo, se dispersan por todo el bloque de script. Entonces, ¿qué quiero decir con esto? He preparado esta caja de arena de code aquí, y aquí también podemos ver que tenemos nuestro saludo y nombre completo para saludar al usuario.

2. Orden de Ejecución y Agrupación de Unidades Lógicas

Short description:

Esta parte se centra en el orden en que las cosas ocurren en el bloque de script. Explica cómo la API de composición permite a los desarrolladores agrupar unidades lógicas en un solo archivo o compartirlas con otros. El orador comparte su experiencia con la API de composición y cómo se puede utilizar sin compartir funcionalidad. Proporcionan un ejemplo de una reimplantación del saludo utilizando la API de composición, destacando la simplicidad y el poder de usar JavaScript directamente.

Pero luego también mostramos los elementos del usuario donde hacemos un bucle y también proporcionamos una función de eliminar elemento para eliminar algo. Si desplazo hacia abajo hasta el bloque de script, ahora quiero que te centres en el orden de cómo las cosas están sucediendo. Tengo la función data que está ejecutando un objeto con el saludo y los elementos. Las propiedades tienen cosas del saludo. Una propiedad calculada con un nombre completo del saludo. Luego un método con la función de eliminar elemento de los elementos. Las categorías se vinculan a la forma en que el esqueleto de la vista, el objeto de la vista aquí está estructurado.

Todo en data está en data. Cada propiedad calculada está en propiedad calculada. Cada función está en el bloque de métodos. Ahora tenemos un punto donde tenemos ahora elementos de saludo, saludo, elementos de saludo. Están dispersos por todo el archivo. Esto es algo así como, crece y crece y crece, pareciéndose a esto. Por supuesto, puede ser una solución dividir el componente, pero centrémonos en que ya no funciona más, no podemos dividir más, y todavía tenemos estas líneas de code no realmente unidas y lo que la composition API nos proporciona es una posibilidad de agrupar unidades lógicas de nuevo, de modo que todo lo que está relacionado con el saludo, podemos imaginar que está en esta caja azul claro en la parte superior y todo lo que está relacionado con los elementos podemos imaginar que está unido en esta caja azul oscuro, casi negra aquí. Así que la composition API permite a los desarrolladores encapsular unidades lógicas en un solo archivo o compartirlas con otros.

Lo que quiero decir con eso es que cuando aprendí sobre la composition API hace un año, siempre se me vendió como esto es lo que debes hacer en lugar de mezclar. Usa la composition API para compartir funcionalidad. Es realmente poderoso. Pero luego empecé con U3, pensé, pero ¿realmente necesitamos compartir lógica para usar la composition API? Porque realmente me gusta cómo funciona la composition API, y en realidad me gusta usarla también sin compartir funcionalidad. Y esto es exactamente lo que haremos ahora. Así que he creado algunos archivos de Hola Mundo en este patio de recreo de componentes de archivo único de vista. Y el primero es una reimplantación de solo las cosas de saludo que vimos antes en U3 composition API. Así que aquí tenemos una plantilla con el saludo y el nombre completo. E importamos calculado de la vista. Si desplazo hacia abajo hasta las propiedades, veo el primer nombre y el apellido. Y aquí abajo tengo la función de configuración, que me está dando un saludo constante con Hola, y un nombre completo con una propiedad calculada, y luego devuelvo todo para pasarlo a mi plantilla. Lo que es bastante genial es que es solo JavaScript, ¿verdad? Me siento bien. En realidad, me sentí un poco sudoroso la primera vez que lo veo, la primera vez que lo vi. Así que aquí tenemos el saludo cons. Es solo un puro cons sin envolverlo en un objeto data, sin usar un ciclo de vida creado para inicializar constantes.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Vue.js London Live 2021Vue.js London Live 2021
34 min
Todo Más Allá de la Gestión de Estado en Tiendas con Pinia
Top Content
State management is not limited to complex applications and transitioning to a store offers significant benefits. Pinia is a centralized state management solution compatible with Vue 2 and Vue 3, providing advanced devtools support and extensibility with plugins. The core API of Pinia is similar to Vuex, but with a less verbose version of stores and powerful plugins. Pinia allows for easy state inspection, error handling, and testing. It is recommended to create one file per store for better organization and Pinia offers a more efficient performance compared to V-rex.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Un Año en Vue 3
Vue.js London Live 2021Vue.js London Live 2021
20 min
Un Año en Vue 3
Top Content
Vue 3 has seen significant adoption and improvements in performance, bundle size, architecture, and TypeScript integration. The ecosystem around Vue 3 is catching up, with new tools and frameworks being developed. The Vue.js.org documentation is undergoing a complete overhaul. PNIA is emerging as the go-to state management solution for Vue 3. The options API and composition API are both viable options in Vue 3, with the choice depending on factors such as complexity and familiarity with TypeScript. Vue 3 continues to support CDN installation and is recommended for new projects.
React Query: ¡Es hora de romper con tu "Estado Global"!
React Summit Remote Edition 2020React Summit Remote Edition 2020
30 min
React Query: ¡Es hora de romper con tu "Estado Global"!
Top Content
Global state management and the challenges of placing server state in global state are discussed. React Query is introduced as a solution for handling asynchronous server state. The Talk demonstrates the process of extracting logic into custom hooks and fixing issues with state and fetching logic. Optimistic updates with mutation are showcased, along with the benefits of using React Query for data fetching and mutations. The future of global state management is discussed, along with user feedback on React Query. The Talk concludes with an invitation to explore React Query for server state management.
Vue: Actualizaciones de Características
Vue.js London 2023Vue.js London 2023
44 min
Vue: Actualizaciones de Características
Top Content
The Talk discusses the recent feature updates in Vue 3.3, focusing on script setup and TypeScript support. It covers improvements in defining props using imported types and complex types support. The introduction of generic components and reworked signatures for defined components provides more flexibility and better type support. Other features include automatic inference of runtime props, improved define emits and defined slots, and experimental features like reactive props destructure and define model. The Talk also mentions future plans for Vue, including stabilizing suspense and enhancing computer invalidations.
Los Átomos de Jotai Son Simplemente Funciones
React Day Berlin 2022React Day Berlin 2022
22 min
Los Átomos de Jotai Son Simplemente Funciones
Top Content
State management in React is a highly discussed topic with many libraries and solutions. Jotai is a new library based on atoms, which represent pieces of state. Atoms in Jotai are used to define state without holding values and can be used for global, semi-global, or local states. Jotai atoms are reusable definitions that are independent from React and can be used without React in an experimental library called Jotajsx.

Workshops on related topic

Vue3: Desarrollo Moderno de Aplicaciones Frontend
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Top Content
Featured WorkshopFree
Mikhail Kuznetsov
Mikhail Kuznetsov
Vue3 fue lanzado a mediados de 2020. Además de muchas mejoras y optimizaciones, la principal característica que trae Vue3 es la API de Composición, una nueva forma de escribir y reutilizar código reactivo. Aprendamos más sobre cómo usar la API de Composición de manera eficiente.

Además de las características principales de Vue3, explicaremos ejemplos de cómo usar bibliotecas populares con Vue3.

Tabla de contenidos:
- Introducción a Vue3
- API de Composición
- Bibliotecas principales
- Ecosistema Vue3

Requisitos previos:
IDE de elección (Inellij o VSC) instalado
Nodejs + NPM
Repensando el Estado del Servidor con React Query
React Summit 2020React Summit 2020
96 min
Repensando el Estado del Servidor con React Query
Top Content
Featured Workshop
Tanner Linsley
Tanner Linsley
La distinción entre el estado del servidor y el estado del cliente en nuestras aplicaciones puede ser un concepto nuevo para algunos, pero es muy importante entenderlo cuando se entrega una experiencia de usuario de primera calidad. El estado del servidor viene con problemas únicos que a menudo se cuelan en nuestras aplicaciones sorpresa como:
- Compartir datos entre aplicaciones- Caché y Persistencia- Deduplicación de Solicitudes- Actualizaciones en segundo plano- Gestión de Datos "Obsoletos"- Paginación y Recuperación Incremental- Memoria y Recolección de Basura- Actualizaciones Optimistas
Los gestores tradicionales de "Estado Global" pretenden que estos desafíos no existen y esto finalmente resulta en que los desarrolladores construyan sus propios intentos sobre la marcha para mitigarlos.
En esta masterclass, construiremos una aplicación que expone estos problemas, nos permite entenderlos mejor, y finalmente los convierte de desafíos a características usando una biblioteca diseñada para gestionar el estado del servidor llamada React Query.
Al final de la masterclass, tendrás una mejor comprensión del estado del servidor, el estado del cliente, la sincronización de datos asíncronos (un bocado, lo sé), y React Query.
Embarcándonos en una aventura con Nuxt 3, Motion UI y Azure
JSNation 2022JSNation 2022
141 min
Embarcándonos en una aventura con Nuxt 3, Motion UI y Azure
WorkshopFree
Melanie de Leeuw
Melanie de Leeuw
¡Nos encantan las aplicaciones web fáciles de crear y desplegar! Entonces, veamos qué puede hacer una pila tecnológica muy actual como Nuxt 3, Motion UI y Azure Static Web Apps. Podría ser perfectamente un trío de oro en el desarrollo web moderno. O podría ser una hoguera de errores y problemas. De cualquier manera, será una aventura de aprendizaje para todos nosotros. Nuxt 3 se lanzó hace apenas unos meses y no podemos esperar más para explorar sus nuevas características, como su compatibilidad con Vue 3 y el Motor Nitro. Agregamos un poco de estilo a nuestra aplicación con la biblioteca Sass Motion UI, porque el diseño estático está pasado de moda y las animaciones vuelven a estar de moda.Nuestra fuerza impulsora de la pila será Azure. Las aplicaciones web estáticas de Azure son nuevas, casi listas para producción y una forma ingeniosa y rápida para que los desarrolladores desplieguen sus sitios web. Así que, por supuesto, debemos probar esto.Con algunas Azure Functions esparcidas por encima, exploraremos lo que puede hacer el desarrollo web en 2022.
Gestión del estado en React con Context y Hooks
React Summit Remote Edition 2021React Summit Remote Edition 2021
71 min
Gestión del estado en React con Context y Hooks
WorkshopFree
Roy Derks
Roy Derks
Mucho ha cambiado en el mundo de la gestión del estado en React en los últimos años. Donde Redux solía ser la principal biblioteca para esto, la introducción de las API de Contexto y Hooks de React ha revolucionado las cosas. Ya no necesitas bibliotecas externas para manejar tanto el estado del componente como el estado global en tus aplicaciones. En este masterclass aprenderás los diferentes enfoques para la gestión del estado en la era post-Redux de React, ¡todos basados en Hooks! Y como bonificación, exploraremos dos próximas bibliotecas de gestión del estado en el ecosistema de React.
Construyendo formularios Vue con VeeValidate
Vue.js London Live 2021Vue.js London Live 2021
176 min
Construyendo formularios Vue con VeeValidate
Workshop
Abdelrahman Awad
Abdelrahman Awad
En este masterclass, aprenderás cómo usar vee-validate para manejar la validación de formularios, gestionar los valores de los formularios y manejar las presentaciones de manera efectiva. Comenzaremos desde lo básico con un formulario de inicio de sesión simple hasta el uso de la API de composición y la construcción de formularios repetibles y de múltiples pasos.

Tabla de contenidos:
- Introducción a vee-validate
- Construcción de un formulario básico con componentes vee-validate
- Manejo de validación y presentaciones de formularios
- Construcción de componentes de entrada validables con la API de composición
- Arrays de campos e inputs repetibles
- Construcción de un formulario de múltiples pasos
Prerrequisitos:
Configuración de VSCode y un proyecto Vite + Vue vacío.
Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3
Vue.js London Live 2021Vue.js London Live 2021
115 min
Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3
WorkshopFree
Gavin Ray
Gavin Ray
El ecosistema frontend avanza a un ritmo frenético. Este masterclass tiene como objetivo equipar a los participantes con una comprensión del estado del ecosistema Vue 3 + GraphQL, explorando ese ecosistema - prácticamente y a través del desarrollo de aplicaciones de pila completa.

Tabla de contenidos
- Los participantes utilizarán Hasura para construir una API GraphQL en tiempo real respaldada por Postgres. Juntos recorreremos su consumo desde un frontend y haremos que el frontend sea reactivo, suscrito a los cambios de datos.
- Además, analizaremos las herramientas comúnmente utilizadas en el stack Vue GraphQL (como Apollo Client y Urql), discutiremos algunas alternativas menos conocidas y abordaremos los problemas frecuentemente encontrados al comenzar.
- Se describirán varios patrones para gestionar datos con estado y sus compensaciones durante el masterclass, y se mostrará una implementación básica para cada patrón discutido.
Nivel del masterclass

NOTA: No se requiere experiencia previa con GraphQL, pero puede ser útil para ayudar a la comprensión. Se cubrirán los fundamentos.