vue computed中get和set的区别与使用方法

vue.js 的 computed 方法:
计算属性是基于它们的依赖进行缓存的,只在相关依赖发生改变时它们才会重新求值。这就意味着 name 和 url 只要还没有发生改变,多次访问 site 计算属性会立即返回之前的计算结果,而不必再次执行函数。用 methods 也可以实现同样的效果,但 methods 在重新渲染的时候会重新调用执行,在性能上 computed 优于 methods,当不需要缓存时可用 methods。

<template>
    <div>
        <Row type="flex" align="middle">
          <i-col span="8">
            <Select v-model="site">
              <Option value="谷歌 http://www.google.com">谷歌 http://www.google.com</Option>
              <Option value="百度 http://www.baidu.co">百度 http://www.baidu.com</Option>
              <Option value="网易 http://www.163.com">网易 http://www.163.com</Option>
            </Select>
          </i-col>
          <i-col span="8" offset="1">
            <div>site:{{ site }}</div>
            <div>name:{{ name }}</div>
            <div>url:{{ url }}</div>
          </i-col>
        </Row>
    </div>
</template>
<script>
export default {
  name: 'MyFirst',
  components: {
  },
  data () {
    return {
      message: '',
      name: '谷歌',
      url: 'http://www.google.com'
    }
  },
  computed: {
    site: {
      // 页面初始化时会先执行一次 get
      // 监视 data 中 name 和 url 的属性值,只有发生改变时,它们才会重新求值,否则取缓存中的
      get () {
        console.log('get')
        return this.name + ' ' + this.url
      },
      // 监视当前属性值的变化,当属性值发生变化时执行,更新相关的属性数据,类似于 watch 的功能
      set (newValue) {
        console.log('set')
        let names = newValue.split(' ')
        this.name = names[0]
        this.url = names[names.length - 1]
      }
    }
  }
}
</script>

执行结果:

切换时:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值