:style中的条件样式逻辑移动到计算属性或者methods

放入methods中的案例:

<template>  
  <div class="app-container">  
    <ul>  
      <li  
        v-for="row in processedRows"  
        :key="row.id"  
        :style="getRowStyle(row)"  
      >  
        {{ row.name }}  
      </li>  
    </ul>  
  </div>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      processedRows: [  
        { name: '张三', id: '11' },  
        { name: '李四', id: '22' },  
        { name: '王五', id: '33' }  
      ]  
    }  
  },  
  methods: {  
    getRowStyle(row) {  
      return {  
        color: row.name === '李四' ? '#ccc' : '#000'  
      };  
    }  
  }  
}  
</script>

放入计算属性要注意什么

计算属性是一个描述符对象,而不是一个方法。因此,你不能像定义方法那样在 computed 对象中定义函数。

computed 对象中定义一个接受参数的函数。计算属性不接收参数,它们仅基于组件的现有数据计算返回值。

<template>
  <div class="app-container">
    <ul>
      <li
        v-for="row in processedRows"
        :key="row.id"
        :style="getRowStyle(row.id)"
      >
        {{ rowDisplayName(row.id) }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      processedRows: [
        { name: '张三', id: '11' },
        { name: '李四', id: '22' },
        { name: '王五', id: '33' }
      ]
    }
  },
  computed: {
    // 基于每行的id获取样式
    getRowStyle() {
      return (id) => {
        const row = this.processedRows.find(r => r.id === id)
        return {
          color: row.name === '李四' ? '#ccc' : '#000'
        }
      }
    },
    // 基于每行的id获取显示名称
    rowDisplayName() {
      return (id) => {
        const row = this.processedRows.find(r => r.id === id)
        return row.name === '李四' ? '不知道' : row.name
      }
    }
  }
}
</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值