vue使用computed计算属性进行传参

本文介绍了一种根据图片原始宽高比调整显示尺寸的方法,通过计算宽高比来实现图片在不同屏幕上的自适应展示,确保图片不失真。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求,根据传递过来的宽高比,进行宽高的重新计算

 computed:{
    imgWD(o){
      return function(o){
        return {
            width:'370px',
            height:370*(1/o) + 'px'
        }
      }
    }
  }
<div :style="imgWD(item.crown)" class="img-detail">
    <image resize='stretch' class="itemPhoto" :src="imgUrl + item.photoName"></image>
</div>

参考:https://blog.youkuaiyun.com/xlelou/article/details/81477391

 

### Vue3 计算属性递参数 在 Vue3 中,计算属性本质上是一个 getter 函数,默认情况下不接受任何参数。然而,在某些场景下确实有需求向计算属性入参数来动态获取数据。 为了实现带有参数的计算属性效果,可以采用返回函数的方式定义计算属性: ```javascript computed: { // 返回一个函数作为计算属性的结果 filteredItems() { return (filterKey) => { return this.items.filter(item => item.includes(filterKey)); } } } ``` 这种方式允许调用 `filteredItems` 并入具体参数[^1]。 需要注意的是,由于计算属性缓存机制依赖于响应式依赖关系的变化触发更新,当通过上述方法给计算属性递参数时,实际上破坏了这种静态依赖检测能力。这意味着每次访问该计算属性都会重新执行内部逻辑而不会利用到缓存优化特性。 因此建议仅在必要时候使用此模式,并考虑性能影响;对于频繁变动或复杂运算场景可能更适合转换成普通的方法而不是尝试将其封装为带参形式的计算属性。 #### 实现示例 下面给出一个完整的例子展示如何在一个组件内创建并使用具有参数化的计算属性: ```html <template> <div v-for="item in filteredItems(searchTerm)" :key="item"> {{ item }} </div> </template> <script setup> import { ref, computed } from 'vue'; const items = ref(['apple', 'banana', 'orange']); const searchTerm = ref(''); // 定义带参数的计算属性 const filteredItems = computed(() => { return function(query){ if (!query) return items.value; return items.value.filter((item) => item.toLowerCase().includes(query.toLowerCase()) ); }; }); </script> ``` 在这个案例里,每当输入框中的 `searchTerm` 发生变化时就会触发过滤操作,从而显示匹配项列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值