Vue - Js 3 y TypeScript
Vue - Js 3 y TypeScript
Vue - Js 3 y TypeScript
js
Página de Atajos
Iniciar un proyecto: (Recomendado)
Registrar App-Scoped assets. (Ej: Componente)
Ejemplo:
<script src=“https://unpkg.com/
vue@3/dist/vue.global.js"></script> v-bind
<div v-bind:id=“dynamicId"></div>
<div id="app">{{ message }}</div>
// Format corta
<script> <div :id=“dynamicId"></div>
const { createApp } = Vue; // Válido también
<div :id="`list-${id}`"></div>
createApp({
data() {
return {
Enlazar multiples propiedades a la vez
<div v-bind="objectOfAttrs"></div>
Con guraciones comunes en el main.ts
fi
fi
Vue.js
Página de Atajos
TypeScript con CompositionAPI
#2
Inferir props: (TypeScript realizará el tipado)
interface Props {
<script setup lang=“ts"> name: string
count?: number
const props = defineProps({ }
foo: { type: String, required: true },
bar: Number // reactive destructure for defineProps()
}); const {
name,
props.foo; // string count = 100
props.bar; // number | undefined } = defineProps<Props>();
</script>
const props = defineProps<Props>(); de neEmits dentro del Script Setup puede ser
// runtime
import { Props } from './other-file'; const emit = defineEmits(['change', 'update']);
// No es soportado // type-based
defineProps<Props>(); const emit = defineEmits<{
(e: 'change', id: number): void
(e: 'update', value: string): void
}>();
de neProps con withDefaults. (Docs)
});
fi
fi
fi
fi
fi
fi
fi
fi
Vue.js
Página de Atajos
Reactividad de Vue.js
Asignando el tipo a computed( )
Asignando el tipo a ref( ) TS puede inferir el tipo basado en el retorno, pero
La función ref, crea un objeto reactivo, el cual se aconseja especi carlo.
});
fi
Vue.js
Página de Atajos
Asignar el tipo a referencias en el Template:
También puedes construir tu Store con una
Útil cuando quieres exponer información entre combinación de funciones reactivas de Vue.
// Global state,
<!-- MyModal.vue --> // Creado en el scope del módulo
<script setup lang="ts"> const globalCount = ref(1);
import { ref } from ‘vue';
export function useCount() {
const isContentShown = ref(false); // local state, creado por componente
const open = () => const localCount = ref(1);
(isContentShown.value = true);
return {
globalCount,
defineExpose({ localCount
open }
}); };
</script>
Vue.js
Página de Atajos
Ejemplo de Pinia Setup Store. Usando la Se puede re-establecer el store llamando $reset( )
const doubleCount = computed(() => count.value * 2); Se puede mutar diferentes piezas del store con $patch
function increment() {
count.value++ store.$patch({
} count: store.count + 1,
return { count, name, doubleCount, increment }; age: 120,
}); name: 'DIO',
});
Dentro del Setup Store:
cartStore.$patch((state) => {
¿Cuál de las dos formas usar? state.items.push({
Usa la que se haga más familiar para ti o resulte más name: 'shoes',
simple, si no estás seguro, empieza con Option Stores.
quantity: 1
});
Consumir el store: state.hasChanged = true;
import { useCounterStore } from '@/stores/counter' });
export default {
setup() {
const store = useCounterStore(); Se puede suscribir para escuchar cambios del store,
pero la ventaja sobre el $watch de Vue, es que la
return {
//Puedes regresar toda la instancia del store suscripción se dispara una vez después del patch.
import { useOtherStore } from './other-store';
return {
name,
doubleCount, Sitios web útiles para continuar:
increment, github.com/vuejs/awesome-vue
}
}, next.attojs.org/
}); pinia.vuejs.org/
github.com/vuejs/apollo