Propiedad watch de Vue3
En Vue3,watchla propiedad se utiliza para observar los cambios de un dato en la instancia de Vue y ejecutar la función de devolución de llamada correspondiente cuando el dato cambia.
watchNos permite observar y reaccionar a los cambios de datos específicos en la instancia de Vue, ejecutando así algunas operaciones secundarias, como actualizar el DOM, realizar solicitudes de red, etc.
2. Uso básico de la propiedad watch
En Vue3,watchla propiedad se puede utilizar de las siguientes maneras:
Ejemplo
export default {
setup() {
const count = ref(0);
watch(count, (newValue, oldValue) => {
console.log(`count de ${oldValue}a ${newValue}`);
});
return {
count
};
}
};
3. Explicación del código
En el código anterior:
- Primero, utilizamos
refcreamos un dato reactivocount, y establecimos su valor inicial en 0. - Luego, utilizamos
watchla función para observarcountlos cambios de.watchacepta dos parámetros:- El primer parámetro es el dato que queremos observar (aquí es
count)。 - El segundo parámetro es una función de devolución de llamada, que se activa cuando el dato observado cambia. La función de devolución de llamada recibe dos parámetros:
newValue: el nuevo valor después del cambio del dato.oldValue: el valor anterior al cambio del dato.
- El primer parámetro es el dato que queremos observar (aquí es
4. Uso avanzado de la propiedad watch
Además de observar un solo dato,watchtambién se pueden observar varios datos, o una expresión compleja.
4.1 Observar varios datos
Ejemplo
export default {
setup() {
const firstName = ref('John');
const lastName = ref('Doe');
watch([firstName, lastName], ([newFirstName, newLastName], [oldFirstName, oldLastName]) => {
console.log(`firstName de ${oldFirstName}a ${newFirstName}`);
console.log(`lastName de ${oldLastName}a ${newLastName}`);
});
return {
firstName,
lastName
};
}
};
En este ejemplo, observamosfirstNameylastNamelos cambios de dos datos. Cuando cualquiera de ellos cambie, se activará la función de devolución de llamada.
4.2 Observar expresiones complejas
Ejemplo
export default {
setup() {
const user = ref({
name: 'Alice',
age: 25
});
watch(
() => user.value.age, // Observar los cambios de user.age
(newAge, oldAge) => {
console.log(`age de ${oldAge}a ${newAge}`);
}
);
return {
user
};
}
};
En este ejemplo, mediante una función observamosuser.agesus cambios. Esta forma es adecuada para observar una propiedad específica de un objeto.
5. Opciones de la propiedad watch
watchLa función también acepta un tercer parámetro, que es un objeto de configuración opcional, que se puede utilizar para personalizar el comportamiento de observación.
Ejemplo
export default {
setup() {
const count = ref(0);
watch(count, (newValue, oldValue) => {
console.log(`count de ${oldValue}a ${newValue}`);
}, {
immediate: true, // Ejecutar inmediatamente la función de devolución de llamada
deep: true // Observación profunda, adecuada para observar objetos o arrays
});
return {
count
};
}
};
immediate: true: indica que la función de devolución de llamada se ejecuta inmediatamente al comenzar la observación, en lugar de esperar a que el dato cambie.deep: true: indica observación profunda, adecuada para observar cambios en objetos o arrays.
Otras extensiones
Vue3 API de opciones