vue watch 修改滚动条_Vue 里的 computed 和 watch 的区别

computed

computed 是计算属性,它会根据你所依赖的数据动态显示新的计算结果

计算属性将被加入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例

通过计算出来的属性不需要调用直接可以在 DOM 里使用

基础例子

var vm = new Vue({el: '#app',data: {message: 'hello'},template: `<div><p>我是原始值: "{{ message }}"</p><p>我是计算属性的值: "{{ computedMessage}}"</p> // computed 在 DOM 里直接使用不需要调用</div>`,computed: {// 计算属性的 gettercomputedMessage: function () {// `this` 指向 vm 实例return this.message.split('').reverse().join('')}}
})

结果:

我是原始值: "Hello"
我是计算属性的值: "olleH"

如果不使用计算属性,那么 message.split('').reverse().join('') 就会直接写到 template 里,那么在模版中放入太多声明式的逻辑会让模板本身过重,尤其当在页面中使用大量复杂的逻辑表达式处理数据时,会对页面的可维护性造成很大的影响

而且计算属性如果依赖不变的话,它就会变成缓存,computed 的值就不会重新计算

所以,如果数据要通过复杂逻辑来得出结果,那么就推荐使用计算属性

watch

一个对象,键是 data 对应的数据,值是对应的回调函数。值也可以是方法名,或者包含选项的对象,当 data 的数据发生变化时,就会发生一个回调,他有两个参数,一个 val (修改后的 data 数据),一个 oldVal(原来的 data 数据)
Vue 实例将会在实例化时调用$watch(),遍历 watch 对象的每一个属性

基础例子

new Vue({data: {n: 0,obj: {a: "a"}},template: `<div><button @click="n += 1">n+1</button><button @click="obj.a += 'hi'">obj.a + 'hi'</button><button @click="obj = {a:'a'}">obj = 新对象</button></div>`,watch: {n() {console.log("n 变了");},obj:{handler: function (val, oldVal) { console.log("obj 变了")},deep: true // 该属性设定在任何被侦听的对象的 property 改变时都要执行 handler 的回调,不论其被嵌套多深},"obj.a":{handler: function (val, oldVal) { console.log("obj.a 变了")},immediate: true // 该属性设定该回调将会在侦听开始之后被立即调用}}
}).$mount("#app");

注意:不应该使用箭头函数来定义 watcher 函数,因为箭头函数没有 this,它的 this 会继承它的父级函数,但是它的父级函数是 window,导致箭头函数的 this 指向 window,而不是 Vue 实例

  • deep 控制是否要看这个对象里面的属性变化
  • immediate 控制是否在第一次渲染是执行这个函数

vm.$watch() 的用法和 watch 回调类似

  • vm.$watch('data属性名', fn, {deep: .., immediate: ..})
vm.$watch("n", function(val, newVal){console.log("n 变了");
},{deep: true, immediate: true})

总结

  • 如果一个数据需要经过复杂计算就用 computed
  • 如果一个数据需要被监听并且对数据做一些操作就用 watch

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

e2140服务器性能,4000 还是E2140?两大人气CPU对决

4000 还是E2140&#xff1f;两大人气CPU对决互联网 发布时间&#xff1a;2009-04-21 01:31:37 作者&#xff1a;佚名 我要评论今夏攒机&#xff0c;双核处理器无疑是网友们的第一选择。由于Intel和AMD的大力推广&#xff0c;双核处理器的价格目前已经跌到了一个大众消费…

12306能删候补订单记录_「实用」官方“捡漏”神器来了!12306铁路候补购票服务正式上线!...

准备购买火车票的小伙伴注意啦&#xff01;中国铁路总公司说&#xff0c;5月22日起&#xff0c;铁路12306网站(含手机客户端)在前期试点的基础上&#xff0c;将铁路候补购票服务扩大到所有旅客列车。候补购票如何操作&#xff1f;怎么提交订单&#xff1f;如何添加“车次席别”…

cad指示箭头快捷键命令_cad中箭头怎么画_cad箭头画法命令 - 学无忧

在cad制图中&#xff0c;我们经常会对图形进标注和注明&#xff0c;这里就需要一些箭头进行指向和声明。而在cad中插入箭头的方法并不是那么简单&#xff0c;不是直接插入就可以的。这里就给大家讲解在cad中插入各种箭头的方法&#xff0c;cad箭头各种画法如下&#xff1a;一、…

联想平板刷机机器人_消费终端年出货量破1.2亿,杨元庆:联想是智能化转型的赋能者...

“科技是我们‘在危机中育先机、于变局中开新局’可以依赖的力量。联想一直在用实际行动为推动‘智慧经济’的增长&#xff0c;为构建“双循环”的新发展格局做贡献。”文丨《中国企业家》记者 刘哲铭编辑丨李薇图片来源丨中企图库一座青砖黑瓦的古城里&#xff0c;绿水萦回&am…

查询已有链表的hashmap_面试官再问你 HashMap 底层原理,就把这篇文章甩给他看...

前言HashMap 源码和底层原理在现在面试中是必问的。因此&#xff0c;我们非常有必要搞清楚它的底层实现和思想&#xff0c;才能在面试中对答如流&#xff0c;跟面试官大战三百回合。文章较长&#xff0c;介绍了很多原理性的问题&#xff0c;希望对你有所帮助~目录本篇文章主要包…

js 获取url问号前_收下这波 JS 技巧,从此少加班

各种业务开发都离不开对数据的处理&#xff0c;然而遇到的很多数据都是不好处理的。这个时候就需要寻求搜索引擎的帮助。这种方法效率是非常低下的&#xff0c;而且根据作者的个性不能保证其对自己的口味。因此这篇文字包含了一份JS 常用业务函数手册&#xff0c;例如时间格式的…

底层实现_Java AOP的底层实现原理

AOP用于处理系统中分布于各个模块的横切关注点&#xff0c;比如事务管理、日志、缓存等。AOP实现的关键&#xff0c;在于AOP框架自动创建的AOP代理&#xff0c;AOP代理主要分为静态代理和动态代理&#xff0c;静态代理的代表为AspectJ&#xff1b;而动态代理则以Spring AOP为代…

lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?

相信不少同学都在初学计算机之时&#xff0c;都被ASCII&#xff0c;Unicode和UFT-8等字符编码格式 搞得焦头烂额&#xff0c;这玩意儿到底是啥&#xff0c;区别是啥&#xff0c;为啥有这么多&#xff1f;反正我刚学的时候纯粹是囫囵吞枣&#xff0c;为了考试潦草背一背&#xf…

git配置用户信息_git系列教程(4)-单用户配置

一般新手都会使用一个用户&#xff0c;要么是github&#xff0c;要么是gitee本地配置上个文档已经讲过本地配置&#xff0c;在这里就不赘述了连接github或者gitee生成ssh公钥ssh-keygen -t rsa -C "emailexample.com" 三次会车即可生成ssh key找id_rsa.pub文件mac或…

32 引脚_函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频方波

void Time0_serve(void ) interrupt 1 using 1 {TH0(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法TL0(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法sound!sound; //将P3.7引脚取反&#xff0c;输出音频方波}/************************…

matlab 功率谱密度 汉宁窗_信号系统的一些基本概念

泄露截断会使谱分析精度受到影响。如果时域信号是周期性的&#xff0c;而截断又按整周期取数&#xff0c;信号截断不会产生问题&#xff0c;因为每周期信号都能代表整个周期信号变化情况。若不是整周期截取数据&#xff0c;则截断将使信号波形两端产生突变&#xff0c;所截取的…

拟真机器人拯救者怎么来_笔点聊科技 篇九:3499起、卷土重来?理性聊聊刚发布的联想拯救者手机Pro...

笔点聊科技 篇九&#xff1a;3499起、卷土重来&#xff1f;理性聊聊刚发布的联想拯救者手机Pro2020-07-23 10:44:270点赞0收藏0评论创作立场声明&#xff1a;想让消费者接受品牌&#xff0c;真金白银买回家还感觉良好&#xff0c;继而产生源源不断的品牌口碑&#xff0c;在强者…

重定向地址_JavaWeb - Servlet:重定向和转发,状态管理

Servlet JDBC 应用在 Servlet 中可以使用 JDBC 技术访问数据库&#xff0c;常见功能如下&#xff1a;查询 DB 数据&#xff0c;然后生成显示页面&#xff0c;例如&#xff1a;列表显示功能。接收请求参数&#xff0c;然后对 DB 操作&#xff0c;例如&#xff1a;注册、登录、修…

华为双前置摄像头_国产手机集体爱上“双打孔屏”,前置双摄像头将成2020年标配?...

今年2月21日&#xff0c;三星S10采用了前置双摄像头的配置&#xff0c;而且是打孔屏&#xff0c;两颗摄像头分别是1000万像素的双核对焦主摄&#xff0c;以及800万像素的景深副摄&#xff0c;不俗的硬件辅以算法虚化&#xff0c;在当时拿下了Dxomark前摄第一的宝座。即便是10个…

python对文件的_python 对文件操作

#!/usr/bin/env python#-*- coding:utf-8 -*-defFind(class_name):class_list[]tagFalsewith open(‘data‘, ‘r‘, encoding‘utf8‘) as f:for line inf:if line.strip() ‘班级&#xff1a;{0}班‘.format(class_name.strip()):class_list.append(line)tagTruecontinueif …

摸底谷歌Gemini:CMU全面测评,Gemini Pro不敌GPT 3.5 Turbo

谷歌的 Gemini 到底几斤几两&#xff1f;和 OpenAI 的 GPT 模型相比表现如何&#xff1f;CMU 这篇论文测明白了。 前段时间&#xff0c;谷歌发布了对标 OpenAI GPT 模型的竞品 ——Gemini。这个大模型共有三个版本 ——Ultra&#xff08;能力最强&#xff09;、Pro 和 Nano。研…

python3 collections模块 tree_第30天: Python collections 模块

by 豆豆1.简介collections 是 python 的内置模块&#xff0c;提供了很多方便且高性能的关于集合的操作&#xff0c;掌握这些知识有助于提高代码的性能和可读性。2.常用功能2.1 namedtuple 功能详解namedtuple() 返回一个新的元组子类&#xff0c;且规定了元组的元素的个数&…

ddns 被解析为127.0.0.1_我为北京冬奥加油,2020.2.1-2.10冬奥知识分享

2020.02.01中国冬梦&#xff0c;世界飞跃&#xff0c;我是果雪儿小小志愿者仇懿琛&#xff0c;我为北京冬奥加油&#xff0c;今天冬奥知识分享——冬奥会历史上那些非凡而又卓越的运动员(十一)明星运动员&#xff1a;米特迈尔第十二届冬季奥运会时间&#xff1a;1976.02.04-02.…

乱码 转ios_王者荣耀:转区数量提升25倍,教你解决检测异常,IOS也有艾琳了

王者峡谷近期最火的一个功能便是转区服务开放限量测试&#xff0c;由于申请的人数非常多&#xff0c;官方决定从今日起将测试资格由最初的2000个提升至每日开放50000个&#xff0c;同时由每日二次开放调整为每日一次&#xff0c;虽说测试资格数量提升了25倍&#xff0c;但依旧有…

冰豹lua驱动设置_卡宴?卡宴!——冰豹ROCCAT Kain 120 AIMO开箱

前言原本一直在用罗技的G700s&#xff0c;但是鉴于众所周知的“电老虎”原因&#xff0c;再加上重量的问题&#xff0c;一直想换一个鼠标试试&#xff0c;虽然不太玩游戏&#xff0c;但是平时使用也喜欢高DPI的设置、另外还稍许有点汗手的问题&#xff0c;所以对鼠标长时间时候…