关于methods、computed、watch的使用
关于methods、computed、watch的使用,前前后后我有转载过好几篇别人的文章。但始终没有自己成型的博文来记录,现自己尝试性的总结一下三者之间的区别:
<template>
<div>
<input type="text" v-model="name" />
<span v-show="isShow">请输入3-6个字符</span>
<br>
<input type="text" v-model="todoName" />
</div>
</template> <script>
export default {
data () {
return {
name: 'zs',
todoName: 'is'
}
},
computed: {
isShow () {
//当this.name的长度小于3或者大于6的时候,显示提示内容(我根据name的变化而变化,别人影响了我)
//一个数据受多个数据影响,这里就是isShow()受到了name长度的影响,也就是别人影响了我
if (this.name.length >= 3 && this.name.length <= 6) {
return false
} else {
return true
}
}
}
}
</script>
再举个自己在实际项目中应用的例子:
这是一个下拉框,下拉框里需要选择不同的设备类型,而且一个项目中有多个页面都用到了这个模块,于是我将它放在了状态管理vuex里面:
这个return this.configList.deviceSubType就是vuex里的返回变量值,通过监控这个值的变化,进而渲染组件中的内容。
总结:
<template>
<div>
<input type="text" v-model="name" />
<span v-show="isShow">请输入3-6个字符</span>
<br>
<input type="text" v-model="todoName" />
</div>
</template> <script>
export default {
data () {
return {
name: 'zs',
todoName: 'is'
}
},
computed: {
isShow () {
//当this.name的长度小于3或者大于6的时候,显示提示内容(我根据name的变化而变化,别人影响了我)
if (this.name.length >= 3 && this.name.length <= 6) {
return false
} else {
return true
}
}
},
watch: {
//监听data中的name,如果发生了变化,就把变化的值给data中的todoName(我影响了别人)
name (newVal) {
this.todoName = newVal
console.log(this.todoName)//输入框中输入name的值,todoname跟着变化
}
},
methods: { }
}
</script>
总结:
1.监听data中的数据的变化
2.监听的数据就是data中的已知值
3.我的变化影响了别人
截图下我在公司项目中用到的实际案例,以下是我在监控echart所用到的watch
这里我监控的是一个对象,用到了watch里的hander。
--------------------------------------------------------------
<template>
<div>
<input type="text" v-model="firstName" />
<!-- <span v-show="isShow">请输入3-6个字符</span> -->
<br />
<input type="text" v-model="lastName" />
</div>
</template> <script>
export default {
data () {
return {
firstName: 'zhang',
lastName: 'fan',
obj1: {
a: 0
}
}
},
computed: {
// 计算结果并返回,只有当被计算的值发生改变时才会触发
// (即:计算属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算)
fullName () {
return this.firstName + '' + this.lastName
}
},
watch: {
// 监听某一个值,当被监听的值发生变化时,执行对应的操作 //监听firstName,当firstName发生变化时就会执行该函数
firstName (newVal) {
//执行需要的操作...
//注:初始化不会执行。只有当被监听的值(firstName)发生变化时才会执行
// this.lastName = newVal
},
//监听lastName,当lastName发生变化时就会执行该函数
lastName: {
handler (newVal, oldVal) {
//执行需要的操作
this.firstName = newVal
},
immediate: true //true: 初始化时就会先执行一遍该监听对应的操作
},
//监听对象obj1,当obj1发生变化时就执行相应的操作
obj1: {
handler () {
//执行需要的操作
},
deep: true//该属性值默认为fasle
// 当被监听的值是对象,只有deep为true时,对应属性的值(obj1.a)发生变化时才能触发监听事件,但是这样非常消耗性能
},
//监听对象具体的属性,deep就不需要设置为true了
'obj1.a': {
handler () {
//执行需要的操作...
}
}
},
持续更新...
关于methods、computed、watch的使用的更多相关文章
- vue中methods,computed,filters,watch的总结
08.28自我总结 vue中methods,computed,filters,watch的总结 一.methods methods属性里面的方法会在数据发生变化的时候你,只要引用了此里面分方法,方法就 ...
- vue methods computed watch区别
一.methods和computed computed是计算属性,methods是方法. html: <p>Reversed message: "{{ reversedMessa ...
- computed,methods,watch
加载顺序: 在官方文档中,强调了computed区别于method最重要的两点 computed是属性调用,而methods是函数调用 computed带有缓存功能,而methods不是 计算属性是基 ...
- watch、computed、methods的区别
1. `computed`属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算.主要当作属性来使用,要return出去一个值:2. `methods`方法表示一个具体的操作,主要书写业务逻辑:3. ...
- computed、methods、watch
computed:计算属性将被混入到 Vue 实例中.所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例. methods:methods 将被混入到 Vue 实例中 ...
- Vue 基础自查——watch、computed和methods的区别
1 前言 创建一个Vue实例时,可以传入一个选项对象 const vm = new Vue({ data: { msg: 'hello' }, computed: {}, methods: {}, w ...
- vue中计算属性computed方法内传参
vue中computed计算属性无法直接进行传参 如果有传参数的需求比如说做数据筛选功能可以使用闭包函数(也叫匿名函数)实现 例如: 在上篇博客vue安装使用最后的成绩表练习中的过滤功能的实现: &l ...
- Vue系列之 => computed实现求值
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- vue computed计算属性 watch监听
计算属性 computed:{ 变量:function(){ return 计算好的值 } } 这时候计算好的值 就付给了你的变量 在实例中可以this.使用 注意 声明的变量的data中不可以重复声 ...
- computed和watch的用法和区别
computed可以监听v-model(data)中的值,只要值发生变化 他就会重新去计算 computed必须是要有一个返回值的哦 <div id="app"> &l ...
随机推荐
- SQLServer —— 数据类型的转换
一.使用convert函数实现强制转换 例如我们现在有如下一张学员成绩表: 现在想查询学号等于100003的学员总成绩,并按照要求打印出来,我们可以这样实现: 结果报错,因为最后一句字符串不能和数值相 ...
- R语言Switch语句
R语言Switch语句 switch语句允许一个变量值的列表来平等进行测试.每个值被称为一个条件(情况),变量被接通检查每个条件(情况). 语法 在R语言中创建switch语句的基本语法是: 以下规则 ...
- php-imagick扩展
介绍 magick 是用 ImageMagic API 来创建和修改图像的PHP官方扩展.ImageMagick® 是用来创建,编辑,合并位图图像的一套组件. 它能够用于读取,转换,写入多种不同格式的 ...
- Nginx教程(一) Nginx入门教程 (转)
1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由俄罗斯的程序设计师IgorSysoev所开 ...
- Directx教程(24) 简单的光照模型(3)
原文:Directx教程(24) 简单的光照模型(3) 在工程myTutorialD3D11_17中,我们重新定义我们的cube顶点法向,每个三角形面的顶点法向都是和这个三角形的面法向是一致 ...
- 2019-8-31-dotnet-使用-System.CommandLine-写命令行程序
title author date CreateTime categories dotnet 使用 System.CommandLine 写命令行程序 lindexi 2019-08-31 16:55 ...
- Kubernetes1.3新特性:新的资源回收控制器
(一) 核心概念 在kubernetes1.3中新增了一个资源回收控制器GarbaseCollector,用这个控制器来替代kubernetes1.3中的资源回收控制器GC. 如下为kubernet ...
- day10-04_多线程常用属性方法
一.需要了解的方法 Thread实例对象的方法 # isAlive(): 判断这个线程是否是存活的 # getName(): 获取线程名 # setName(): 设置线程名 #enumerate() ...
- python基础---集合类型(Sets)
集合类型(Sets) 集合对象是不同的(不可重复)hashable对象的无序集合.常见用法包括:成员关系测试.移除序列中的重复.以及科学计算,例如交集.并集.差分和对称差分.通俗点来说,集合是一个无序 ...
- git 本地仓库操作
一.git对象模型和存储 二.常用命令 1)git checkout branch 切换分支 假设现在有两个分支,master和dev分支 i dev分支上没有readme.txt 在master分支 ...