Vue 2 vs Vue 3 Flashcards
v-on
<button v-on:click="handleClick">Click aquí</button> <button @click="handleClick">Click aquí</button>
Características principales del Composition API
-
Modularidad y Reutilización:
- Con Composition API, puedes agrupar lógicamente fragmentos de código relacionados (como estado, métodos y efectos secundarios) en lugar de dividirlos por opciones como
data
,methods
ocomputed
. Esto mejora la legibilidad y facilita la reutilización del código.
- Con Composition API, puedes agrupar lógicamente fragmentos de código relacionados (como estado, métodos y efectos secundarios) en lugar de dividirlos por opciones como
-
Declarativo y Funcional:
- Usa funciones y valores reactivos (proporcionados por Vue) para declarar estado reactivo y lógica en lugar de depender de propiedades específicas dentro de un objeto de configuración.
-
Mejor Tipado con TypeScript:
- Composition API está diseñado para aprovechar al máximo las capacidades de TypeScript, ofreciendo un mejor soporte de tipado y autocompletado en comparación con Options API.
Composition API: setup
-
setup
:- Es el punto de entrada principal en el Composition API. Dentro de
setup
, defines tu lógica y el estado del componente.
```javascript
import { ref, computed } from ‘vue’;
setup() {
const count = ref(0); // Estado reactivo
const doubleCount = computed(() => count.value * 2); // Propiedad computadaconst increment = () => { count.value++; }; return { count, doubleCount, increment }; } }; ```
- Es el punto de entrada principal en el Composition API. Dentro de
Composition API: ref
-
ref
: Crea un valor reactivo. Úsalo cuando necesites datos primitivos reactivos (como números o cadenas).-
reactive
: Crea un objeto reactivo. Es útil para estructuras de datos más complejas.
```javascript
const state = reactive({
count: 0,
message: ‘Hello’
});const increment = () => {
state.count++;
};
```
-
Composition API: computadas
Usa computed
para definir propiedades derivadas de forma reactiva.
const contador = computed(() => { if (a.value > 0) return "positive"; else if (a.value < 0) return "negative"; else return "zero"; });
Composition API: Watchers
- Usa
watch
para ejecutar código en respuesta a cambios reactivos.```javascript
import { ref, watch } from ‘vue’;const count = ref(0);watch(count, (newValue, oldValue) => {
console.log(Count cambió de ${oldValue} a ${newValue}
);
});
```
Ventajas del Composition API
-
Organización más limpia:
- Ayuda a organizar mejor la lógica compleja de los componentes.
-
Reutilización fácil de lógica:
- Puedes extraer lógica en composables (funciones reutilizables) que encapsulan comportamiento y estado.
-
Soporte avanzado de TypeScript:
- Ofrece un entorno más sólido para el desarrollo con tipado estático.
Props en Vue 3
const props = defineProps({
title: {
type: String,
default: “Título por defecto”,
},
count: {
type: Number,
default: 0,
},
isActive: {
type: Boolean,
required: true,
},
});
<p>¡El componente está activo!</p>
<p v-else>El componente está inactivo.</p>
defineEmit
No, defineEmit no está disponible en Vue 2. Este es un método introducido con la Composition API de Vue 3, que permite definir eventos que un componente puede emitir, proporcionando una forma más declarativa de trabajar con eventos en componentes.
En Vue 2, la forma de emitir eventos desde un componente hijo al padre es utilizando el método
Rutas con Vue Router
- configuras carpeta router con index.js
- usas RouterView
<router-link :to'' >
Diferencia entre servicios, mixins y composables en Vue 3
- Servicios: Lógica compartida sin reactividad, útiles para manejar datos o estado global, no dependen de Vue.
- Mixins: Reutilizan opciones de componentes, pero pueden generar conflictos. Desaconsejados en Vue 3.
- Composables: Funciones modernas y reactivas con Composition API, recomendadas para lógica reutilizable.
¿Qué son los utils y en qué se diferencian de servicios, mixins y composables?
- Utils: Funciones puras y genéricas sin reactividad, independientes del framework. Útiles para tareas comunes como validaciones o formateos.
- Diferencia: No tienen estado ni reactividad (como servicios), son más simples que composables y no dependen de Vue (como mixins o composables).
mapState
// Con mapState import { mapState } from 'vuex'; computed: { ...mapState({ userName: state => state.user.name, isAuthenticated: state => state.auth.isAuthenticated }) }
// Acceso a un módulo específico computed: { ...mapState('user', { name: state => state.name, age: state => state.age }) }