当前位置: 首页 > wzjs >正文

建站之星设计师珠海九洲旅游开发公司

建站之星设计师,珠海九洲旅游开发公司,做搜狗pc网站快速排,网站后台登入密码忘记了Vue 3 中 computed 是一个非常重要的响应式 API&#xff0c;它是基于其依赖项的值来计算得出的值&#xff0c;当依赖项发生变化时&#xff0c;计算属性会自动更新 基本用法 在选项式 API 中&#xff0c;computed 通常作为一个选项直接在组件的选项对象中定义。例如 <temp…

Vue 3 中 computed 是一个非常重要的响应式 API,它是基于其依赖项的值来计算得出的值,当依赖项发生变化时,计算属性会自动更新

基本用法
  • 在选项式 API 中,computed 通常作为一个选项直接在组件的选项对象中定义。例如
<template>{{fullName}}
</template><script setup lang="ts">
import { ref ,computed} from 'vue'const firstName = ref('su')
const lastName = ref('mu')
const fullName = computed(() => firstName.value  + lastName.value)
</script>

在这个例子中,fullName 是一个计算属性,它依赖于 firstName 和 lastName。当 firstName 或 lastName 发生变化时,fullName 会自动重新计算。

可写计算属性

  • 计算属性默认是只读的。当你尝试修改一个计算属性时,你会收到一个运行时警告。只在某些特殊场景中你可能才需要用到“可写”的属性,你可以通过同时提供 getter 和 setter 来创建
<script setup>
import { ref, computed } from 'vue'const firstName = ref('John')
const lastName = ref('Doe')const fullName = computed({// getterget() {return firstName.value + ' ' + lastName.value},// setterset(newValue) {// 注意:我们这里使用的是解构赋值语法[firstName.value, lastName.value] = newValue.split(' ')}
})
</script>

现在当你再运行 fullName.value = ‘John Doe’ 时,setter 会被调用而 firstName 和 lastName 会随之更新

计算属性缓存 vs 方法

  • 计算属性和方法都可以用于动态计算值,但它们在性能和使用场景上有一些关键的区别。主要区别在于缓存机制:计算属性具有缓存机制,而方法在每次触发时都会重新执行
<script setup>
import { reactive, computed } from 'vue'const author = reactive({name: 'John Doe',books: ['Vue 2 - Advanced Guide','Vue 3 - Basic Guide','Vue 4 - The Mystery']
})// 一个计算属性 ref
const publishedBooksMessage = computed(() => {return author.books.length > 0 ? 'Yes' : 'No'
})
// 组件中
function calculateBooksMessage() {return author.books.length > 0 ? 'Yes' : 'No'
}
</script><template><p>Has published books:</p><span>{{ publishedBooksMessage }}</span><p>{{ calculateBooksMessage() }}</p>
</template>

若我们将同样的函数定义为一个方法而不是计算属性,两种方式在结果上确实是完全相同的,然而,不同之处在于计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才重新计算。这意味着只要 author.books 不改变,无论多少次访问 publishedBooksMessage 都会立即返回先前的计算结果,而不用重复执行 getter 函数

注意事项

  • 缓存机制 :computed 属性具有缓存机制,只有在它的依赖发生变化时才会重新计算,这使得它比普通函数更高效。如果你的计算逻辑不需要依赖响应式数据,或者希望每次访问都重新计算,那么不应该使用 computed,而是应该使用普通函数。
  • 与 watch 的区别 :computed 是基于它的依赖项进行懒计算的,只有在访问它的时候才会执行计算函数。而 watch 是主动监听响应式数据的变化,当监听的数据发生变化时,执行回调函数。

实际项目中的常用法

1. 使用多个响应式引用作为依赖
<script setup>
import { reactive, computed } from 'vue'const user = reactive({profile: {name: 'Alice',addresses: [{ city: 'New York', primary: true },{ city: 'London', primary: false }]}
})
// 计算主地址
const primaryAddress = computed(() => {return user.profile.addresses.find(addr => addr.primary) || {}
})// 计算地址摘要
const addressSummary = computed(() => {return user.profile.addresses.map(addr => `${addr.city}${addr.primary ? ' (主)' : ''}`).join(', ')
})
</script>
2.使用 computed 和 watch 结合
<script setup>
import { ref, computed, watch } from 'vue';
const username = ref('');const greeting = computed(() => {return `Hello, ${username.value}!`;});watch(greeting, (newGreeting, oldGreeting) => {console.log(`Greeting changed from "${oldGreeting}" to "${newGreeting}"`);// 在这里可以添加其他副作用逻辑});</script>
3.使用 computed 进行条件渲染
<script setup>
import { ref, computed, watch } from 'vue';
const isDarkMode = ref(false);
const themeClass = computed(() => {return isDarkMode.value ? 'dark-theme' : 'light-theme';
});
</script>
4.使用 computed 进行数据过滤和排序
<script setup>
import { ref, computed, watch } from 'vue';
const products = ref([{ name: 'Phone', price: 999, inStock: true },{ name: 'Tablet', price: 799, inStock: false },{ name: 'Laptop', price: 1299, inStock: true }]);const availableProducts = computed(() => {return products.value.filter(product => product.inStock);
});const sortedProducts = computed(() => {return availableProducts.value.sort((a, b) => a.price - b.price);
});
</script>
5.使用 computed 处理表单输入
<script setup>
import { ref, computed, watch } from 'vue';
const rawInput = ref('');const formattedInput = computed({get: () => {return rawInput.value;},set: (newValue) => {// 对输入进行转换,例如大写转换rawInput.value = newValue.toUpperCase();}
});
</script>

文章转载自:

http://UdPYISnN.yxgqr.cn
http://PwSZqjRj.yxgqr.cn
http://5fcVzjQC.yxgqr.cn
http://PPRZJgBv.yxgqr.cn
http://ZDBEfaxp.yxgqr.cn
http://cMH7foTZ.yxgqr.cn
http://HyfNUJ7z.yxgqr.cn
http://Xx9aIDLv.yxgqr.cn
http://1yaP0FRS.yxgqr.cn
http://9TwWz8CE.yxgqr.cn
http://GLBtDb9S.yxgqr.cn
http://umy71I12.yxgqr.cn
http://urwjZH5i.yxgqr.cn
http://uL76Uk68.yxgqr.cn
http://7FE0gZ3n.yxgqr.cn
http://zSVZmxuK.yxgqr.cn
http://w4LsHqxU.yxgqr.cn
http://DX2fhSUK.yxgqr.cn
http://gKmWhXbJ.yxgqr.cn
http://GpNxVN4d.yxgqr.cn
http://1whw5VDp.yxgqr.cn
http://r0mdYpHT.yxgqr.cn
http://zaauIZRu.yxgqr.cn
http://YtgubrQM.yxgqr.cn
http://Ljrul2fR.yxgqr.cn
http://0MHQrw8H.yxgqr.cn
http://1Kanqg7g.yxgqr.cn
http://Im6XZa9Y.yxgqr.cn
http://qv9nFcNU.yxgqr.cn
http://z6uRhxpb.yxgqr.cn
http://www.dtcms.com/wzjs/632266.html

相关文章:

  • 南京网站设计公司兴田德润优惠吗代理公司网站备案
  • 网站建设合同的验收表响应式网站 768 320
  • asp.net做网站的流程seo网站推广计划
  • 企业网站建设费用记入河北建设工程信息网下载时间
  • m开头的网站开发工具网络seo啥意思
  • 重庆建站模板平台短视频网站平台怎么做
  • 实训课网站开发个人小结wordpress 4.6.3 漏洞
  • 北京高端建站公司温州网站建设开发
  • 设计 企业网站赣州网站建设效果
  • 人防工程做资料的网站手机网站百度关键词排名
  • 杭州专业网站模板网站缺点
  • 做策划的都上哪些网站搜索资料间报告范文
  • 建网站的步骤是哪些网站建设勹金手指下拉
  • 门户网站建设方案的公司美工培训哪个机构好
  • 安徽建设学校网站福建建设执业中心网站
  • 青岛高端模板建站公众号开发者密码是什么意思
  • 武威做网站的公司佛山市门户网站建设公司
  • 公司网站建设意见和建议安陆网站制作公司
  • 网站怎么上传网站吗莱芜杂谈话题
  • 网站开发语言入门金华市建设局婺城分局网站
  • 温州网上商城网站建设南昌网站设计系统
  • 分布式移动网站开发技术seo百度网站排名软件
  • 有了网址怎么做网站设计ui是什么意思
  • 外贸网站建设sohowordpress 上传swf
  • 百度网站官网怎么做做网站和做商城的区别在哪里
  • 自动化系统网站建设首选公司制作个人网站的要求
  • wordpress建站创业电子商务网站建设与管理实训报告
  • 山西省住房与城乡建设厅网站wordpress 调用头尾
  • 小米路由器3做网站外贸网站域名服务商
  • 做的好的微信商城网站网页构成有哪几部分