初学者毕业设计做网站,网站首页代码在哪里,沧州网站建设选网龙,白城学习做网站的学校vue3 学习笔记08 – computed 和 watch
computed computed 是 Vue 3 中用于创建计算属性的重要 API#xff0c;它能够根据其它响应式数据动态计算出一个新的值#xff0c;并确保在依赖数据变化时自动更新。 基本用法 squaredCount 是一个计算属性#xff0c;它依赖于 count…vue3 学习笔记08 – computed 和 watch
computed computed 是 Vue 3 中用于创建计算属性的重要 API它能够根据其它响应式数据动态计算出一个新的值并确保在依赖数据变化时自动更新。 基本用法 squaredCount 是一个计算属性它依赖于 count 的值并且会在 count 变化时自动更新 import { ref, computed } from vue;// 定义一个响应式数据const count ref(1);// 定义一个计算属性const squaredCount computed(() count.value * count.value);console.log(squaredCount.value); // 输出1// 修改 count触发计算属性更新count.value 2;console.log(squaredCount.value); // 输出4 缓存和计算属性的惰性求值 computed 默认会缓存计算结果只有在它的依赖项变化时才会重新计算。这样可以确保在性能上的优化避免不必要的计算 import { ref, computed } from vue;const count ref(1);// 定义一个计算属性使用 getter 函数const squaredCount computed(() {console.log(computed squaredCount); // 仅在首次获取或依赖变化时输出return count.value * count.value;});console.log(squaredCount.value); // 输出1count.value 2;console.log(squaredCount.value); // 输出4 计算属性的 setter 在某些情况下可能需要通过计算属性设置值。Vue 3 允许定义计算属性的 get 和 set 方法使其可以作为双向绑定的源。 import { ref, computed } from vue;const firstName ref(John);const lastName ref(Doe);const fullName computed({get: () ${firstName.value} ${lastName.value},set: (value: string) {const names value.split( );firstName.value names[0];lastName.value names[names.length - 1];}});console.log(fullName.value); // 输出John DoefullName.value Jane Smith;console.log(firstName.value); // 输出Janeconsole.log(lastName.value); // 输出Smith 在 Vue 组件中使用 在 Vue 组件中可以将计算属性直接用于模板中而不需要额外的 .value 访问方式。 templatedivpCount: {{ count }}/ppSquared Count: {{ squaredCount }}/p/div/templatescript setupimport { ref, computed } from vue;const count ref(1);const squaredCount computed(() count.value * count.value);/script
watch watch 函数用于监听一个响应式数据的变化它可以用来执行一些副作用操作比如异步请求、处理复杂逻辑或者更新状态 监听响应式数据的变化 import { ref, watch } from vue;const count ref(0);// 通过 watch 函数监听 count 的变化。每当 count 发生变化时回调函数会被调用同时传入新值 newValue 和旧值 oldValue。watch(count, (newValue, oldValue) {console.log(count changed from ${oldValue} to ${newValue});});
监听多个数据的变化 import { ref, watch } from vue;const firstName ref(John);const lastName ref(Doe);watch([firstName, lastName], ([newFirst, newLast], [oldFirst, oldLast]) {console.log(Name changed from ${oldFirst} ${oldLast} to ${newFirst} ${newLast});}); 异步处理和立即执行 import { ref, watch } from vue;const count ref(0);watch(count, async (newValue, oldValue) {console.log(count changed from ${oldValue} to ${newValue});// 异步操作示例try {await someAsyncOperation(newValue);} catch (error) {console.error(Async operation failed:, error);}}, { immediate: true }); // 立即执行回调函数
停止监听 watch终止监听只需要将watch赋值给一个变量当达到条件调用watch赋值的那个变量就可以终止监听了 import { ref, watch } from vue;const count ref(0);const stopWatching watch(count, (newValue, oldValue) {console.log(count changed from ${oldValue} to ${newValue});});// 停止监听stopWatching();