2 de enero de 2025
Jenkins vs GitHub Actions
Hace poco me topé con un interesante artículo de la gente de Slack, donde narran su experiencia migrando de Jenkins a GitHub Actions (GHA).
En el contexto de Vue, la reactividad es la capacidad de rastrear los cambios en los datos y actualizar la interfaz de usuario (UI) de manera eficiente.
Cuando declaras datos reactivos, Vue los convierte en "reactivos" y los asocia con dependencias que necesitan ser notificadas cuando esos datos cambien.
import { reactive } from "vue";
const state = reactive({
counter: 0,
});
state.counter++;
Vue 3 utiliza Proxies para implementar la reactividad. Un Proxy es una funcionalidad de JavaScript que permite interceptar y redefinir operaciones como acceso, escritura o eliminación de propiedades en un objeto.
const handler = {
get(target, key) {
console.log(`Accessing property ${key}`);
return target[key];
},
set(target, key, value) {
console.log(`Modifying property ${key} to ${value}`);
target[key] = value;
return true;
}
};
const reactiveObject = new Proxy({ name: "Vue", version: 3 }, handler);
console.log(reactiveObject.name);
reactiveObject.version = 4;
En Vue 3, este mismo principio se aplica para transformar objetos declarados con reactive o ref en estructuras reactivas.
El método reactive convierte un objeto en un proxy reactivo. Cada vez que accedes o modificas sus propiedades, Vue registra dependencias y notifica a los componentes afectados.
const state = reactive({
counter: 0,
});
state.counter++;
ref se utiliza para crear valores reactivos simples, como primitivos o estructuras de datos que no necesitan ser objetos complejos.
import { ref } from "vue";
const count = ref(0);
count.value++;
Vue utiliza un sistema interno que rastrea las dependencias cuando se accede a las propiedades reactivas. Esto ocurre en el contexto de una función reactiva, como computed o watchEffect.
<script setup>
import { reactive, watchEffect } from "vue";
const state = reactive({
message: "Hola, Vue!",
});
watchEffect(() => {
console.log(state.message); // This will run whenever state.message changes
});
state.message = "Reactivity in action!";
</script>
reactive o ref.Para más información, puede consultar la documentación oficial de Vue Reactividad en profundidad.