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

data, prop, computed, method 的区别

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

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
},
},
})

原文地址:https://segmentfault.com/a/1190000013277075

vue.js 中 data, prop, computed, method,watch 介绍的更多相关文章

  1. Vue.js中data,props和computed数据

    data data 是Vue实例的数据对象.Vue将会将data 的属性转换为 getter/setter, 也就是用Object.defineProperty方法(在官网里面有深入响应式原理里面具体 ...

  2. 实例分析Vue.js中 computed和methods不同机制

    在vue.js中,有methods和computed两种方式来动态当作方法来用的 1.首先最明显的不同 就是调用的时候,methods要加上() 2.我们可以使用 methods 来替代 comput ...

  3. vue.js中父组件触发子组件中的方法

    知识点:vue.js中,父组件的method中,触发子组件中的方法,获得子组件中的定义的属性 (1)子组件 : child_crud.js var html_child_crud= "< ...

  4. vue.js中,input和textarea上的v-model指令到底做了什么?

    v-model是 vue.js 中用于在表单表单元素上创建双向数据绑定,它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能: 对,它本质上只是一个语法糖,但到底是一 ...

  5. Vue.js中使用select选择下拉框

    在Vue.js中使用select选择下拉框有两种方法: 第一种: Add.html: <select v-model="sysNotice.noticeType" id=&q ...

  6. vue.js 中双向绑定的实现---初级

    1. 1 我们看到的变量,其实都不是独立的,它们都是windows对象上的属性 <!DOCTYPE html> <html lang="en"> <h ...

  7. 浅析Vue.js 中的条件渲染指令

    1 应用于单个元素 Vue.js 中的条件渲染指令可以根据表达式的值,来决定在 DOM 中是渲染还是销毁元素或组件. html: <div id="app"> < ...

  8. vue.js中的slot

    vue.js 中的 slot 一.slot 的作用 调用组件的时候,对于数据,我们会用props将数据从父组件传至子组件.但是,如果从父组件到子组件,单纯是页面局部渲染的改变,slot会更合适. 二. ...

  9. vue.js 中使用(...)运算符报错的解决方法

    vue.js 中使用(...)运算符报错的解决方法 Syntax Error:Unexpected token(XX:X) }, computed:{ ...mapGetters([ 'pageSiz ...

随机推荐

  1. wpf 样式的调用

    这个针对异地调用: 1.在主程序的项目中新建一个Skins的目录.然后再目录里新建一个BlackSkin.xaml的字典资源: <ResourceDictionary xmlns="h ...

  2. ListView无障碍识别整个listView,不识别item,设置了setContentDescription也没实用

    点击ListView的时候.无障碍识别到的是整个listView,不会读点击的那个item. 解决的方法是在getView里手动设置: <span style="font-size:1 ...

  3. HDU 5533/ 2015长春区域 G.Dancing Stars on Me 暴力

    Dancing Stars on Me Problem Description The sky was brushed clean by the wind and the stars were col ...

  4. luogu1514 引水入城

    题目大意 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个NN 行\times M×M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市 ...

  5. oc31--new实现

    // // main.m // new方法实现原理 #import <Foundation/Foundation.h> #import "Person.h" int m ...

  6. framebuffer的入门介绍-实现程序分析【转】

    本文转载自:http://blog.csdn.net/liuzijiang1123/article/details/46972723 如想想对lcd屏进行操作(例如在lcd屏幕上画线,或者显示视频数据 ...

  7. poi读取word2003(.doc文档)中的表格

    poi读取word2003(.doc文档)中的表格 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API.在网上见到好多通过po ...

  8. Oracle_exp/expdp备份

    目录索引 1.exp和expdp的区别 2.expdp导出数据库流程 一.↓↓exp和expdp的区别↓↓ 1.exp和expdp最明显的区别就是导出速度的不同.expdp导出是并行导出(如果把exp ...

  9. centos 修改网卡信息命令

    vi /etc/sysconfig/network-scripts/ifcfg-eth0

  10. JQuery 使用.show()和.hide()做的可爱动画

    只是最基本的东西,没啥稀奇的,只是今天看jquery教程的时候偶然看到show()和hide()是可以写两个参数的, 第一个参数是元素隐藏/显示的速度(单位:毫秒),另一个是一个function类型. ...