vue.js 中 data, prop, computed, method,watch 介绍

vue源码不需要看,只需要做实验总结出vue框架的具体的运行机制。

工程师要习惯通过做实验获取自己想要的信息。

vue.js 中 data, prop, computed, method,watch 介绍

data, prop, computed, method 的区别

类型加载顺序加载时间写法作用备注
prop1beforeCreated, created之间对象或数组接收父组件传递的值 
data3同↑对象或函数定义以及初始化数据最好是用于视图上展示的数据,否则最好定义在外面或者vm对象内(减少开支,提高性能);组件内只接受函数
computed4同↑函数提供相对简单的数据计算
method2同↑函数提供相对复杂的数据计算 

data 与 computed 的关系

根据官网的介绍,虽然模板内的表达式很方便,但是对于任何复杂的逻辑,你都应当使用计算属性。

data 只是对于你想要展示的数据的定义,但是,如果该数据需要进行复杂的处理(例如将其变为翻转字符串等),就需要计算属性的帮忙。

类型作用备注
data定义以及展示数据 
computed对数据进行复杂的操作转换 
<span>{{reversedMessage}}</span>
data() {
  message: '',
},
computed: {
  reversedMessage() {
    return this.message.split('').reverse().join('');
  },
},

computed 与 method 的区别

当然,我们可以把同一函数定义为一个方法而不是计算属性,两种方式最后的结果一样的,不同的是,计算属性是基于他们的依赖进行缓存的,只有相关依赖的值发生改变才会重新求值;而方法只要被触发就会再次执行该函数。如果你不希望有缓存,请用方法来代替。

类型是否被缓存备注
computed只要依赖值有变化就会立马执行
method需要绑定事件
method: {
  reversedMessage() {
    return this.message.split('').reverse().join('');
  },
},

computed 与 watch 的区别

在很多情况下,computed 会比 watch 使用起来更加方便,但是当需要在数据变化时执行异步或者开销比较大的情况下,用 watch 会更加合适。

例如官网提供的例子(问与答)。
watch 观察 question 的值,若值有改变会执行方法 getAnswer,并且根据 question 不同的值,answer 会给出不同的回答,并且会异步调用 API 返回相应的值,这些都是计算属性做不到的。

类型目的备注
computed依赖变动实时更新数据更新数据
watch观察某一特定的值,执行特定的函数观察数据
<div id="watch-example">
  <p>
    Ask a yes/no question:
      <input v-model="question">
  </p>
  <p>{{answer}}</p>
</div>

var watchExampleVM = new Vue({
  el: "watch-example",
  data: {
    question: '',
    answer: 'I cannot give you an answer until you ask a question!',
  },
  watch: {
    question: function(newquestion, oldQuestion) {
      this.answer = 'Waiting for you to stop typing';
      this.getAnswer();
    },
  },
  method: {
    getAnswer: _.debounce{
      function() {

        if (this.question.indexOf('?') === -1) {
          this.answer = 'Question ususally contain a question mark -- ?';
        }
        this.answer = 'Thinking';
        var vm = this.axios.get(XXX)
        ` ` `  ` ` `
      },
      500
    },
  },
})
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值