Vue学习-计算属性和侦听器

这篇具有很好参考价值的文章主要介绍了Vue学习-计算属性和侦听器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue学习-计算属性和侦听器

一、 计算属性(computed)

1、计算属性的定义和原理

1、定义:要用的属性不存在,要通过已有属性计算得来。
2、原理:底层借助了Objcet.defineproperty方法提供的getter和setter。
3、get函数什么时候执行?
  (1) 初次读取时会执行一次。
  (2)当依赖的数据发生改变时会被再次调用。
4、优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便。
5、备注:
  (1)计算属性最终会出现在vm上,直接读取使用即可。
  (2)如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变。

2、基础例子

  计算属性有两种写法,当需要修改计算属性的值时用完整写法(即需要set方法),否则用简写形式。

(1)完整写法
<body>
<div id="app">
    <input type="text" v-model="a"><br>
    <input type="text" v-model="b"><br>
    <h1 v-text="full"></h1><br>
</div>

<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var vm=new Vue({
        el:"#app",
        data(){
            return{
                msg:"Hello World!",
                a:"李",
                b:"明"
            }
        },
        computed:{
        	/*get有什么作用?当有人读取full时,get就会被调用,且返回值就作为full的值
			get什么时候调用?
				1.初次读取full时。
				2.所依赖的数据发生变化时。
				*/
            full:{
                get(){
                    console.log("full get被调用了")
                    return this.a+"-"+this.b
                },
                set(value){
                    console.log("full set被调用了")
                    var str=value.split("-")
                    this.a=str[0]
                    this.b=str[1]
                }
            }
        }
    })
</script>
</body>
(2)简写形式
computed:{
	//简写,只有get方法
	full(){
		console.log(' full get被调用了')
		return this.firstName + '-' + this.lastName
	}
}

二、 侦听器(watch)

1、侦听器

1、当被监视的属性变化时,回调函数自动调用,进行相关操作
2、监视的属性必须存在,才能进行监视,既可以监视 data ,也可以监视计算属性
3、配置项属性 immediate:false ,改为 true,则初始化时调用一次 handler(newValue,oldValue)
4、 监视有两种写法
  a、 new Vue时传入watch配置
  b.、通过vm.$watch监视

2、基础例子

(1)完整写法
<div id="root">
	<h2>今天天气很{{info}}</h2>
	<button @click="changeWeather">切换天气</button>
</div>
const vm = new Vue({
	el:'#root',
	data:{
		isHot:true,
	},
	computed:{
		info(){
			return this.isHot ? '炎热' : '凉爽'
		}
	},
	methods: {
		changeWeather(){
			this.isHot = !this.isHot
		}
	},
	//new Vue时传入watch配置
	/* watch:{
		isHot:{
			immediate:true, //初始化时让handler调用一下
			//handler什么时候调用?当isHot发生改变时。
			handler(newValue,oldValue){
				console.log('isHot被修改了',newValue,oldValue)
			}
		}
	} */
})

//通过vm.$watch监视
vm.$watch('isHot',{
	immediate:true, //初始化时让handler调用一下
	//handler什么时候调用?当isHot发生改变时。
	handler(newValue,oldValue){
		console.log('isHot被修改了',newValue,oldValue)
	}
})
(2)简写形式
//new Vue时传入watch配置
//简写
isHot(newValue,oldValue){
	console.log('isHot被修改了',newValue,oldValue,this)
} 

//通过vm.$watch监视
//简写
vm.$watch('isHot',(newValue,oldValue)=>{
	console.log('isHot被修改了',newValue,oldValue,this)
}) */

三、 计算属性和侦听器的区别

computed和watch之间的区别:
  1、computed能完成的功能,watch都可以完成。
  2、watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。
两个重要的小原则:
  1、所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。
  2、所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,这样this的指向才是vm 或 组件实例对象。文章来源地址https://www.toymoban.com/news/detail-417267.html

到了这里,关于Vue学习-计算属性和侦听器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端Vue入门-day02-vue指令、computed计算属性与watch侦听器

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 指令补充 指令修饰符 v-bind 对于样式控制的增强  操作class 案例:京东秒杀 tab 导航高亮 操作style  v-model 应用于其他表单元素  computed 计算属性 基础语法 computed 计算属

    2024年02月11日
    浏览(45)
  • 浅谈在 Vue2 和 Vue3 中计算属性和侦听器的一些变化

    计算属性 computed 和侦听器 watch 都是 Vue.js 框架中用来响应式更新视图的重要概念。因此无论是在哪个版本,它们都是不可缺少的概念, 这篇文章就不过多详细介绍计算属性和侦听器的概念和理论了 ,接下来主要谈谈 Vue2 和 Vue3 中计算属性和侦听器的语法变化和异同。 计算属

    2023年04月26日
    浏览(55)
  • Vue3 计算属性和侦听器实战(computed、watch)——简易点餐页面

    这篇文章记录一下 Vue3 计算属性和侦听器 (computed、watch) 实战的内容,这篇文章我们在有计算属性和侦听器的基础上,我们来制作一个简易点餐页面,接下来我们一起来从零到一开始制作。 计算属性和侦听器相关文章推荐: 深入与浅谈 Vue 中计算属性和侦听器的区别和使用

    2024年02月09日
    浏览(100)
  • 深入与浅谈 Vue 中计算属性和侦听器的区别和使用(Vue3版本为例)

    #五一技术创作马拉松# 计算属性 computed 和侦听器 watch 都是 Vue.js 框架中用来响应式更新视图的重要概念。在 Vue 项目开发中,这两个技术点是非常重要的,同时也是 Vue 基础中不可缺少的知识点。在面试中,计算属性 computed 和侦听器 watch 也是经常出现的考点,作为前端开发也

    2024年02月07日
    浏览(71)
  • Vue——侦听器

    目录 基本示例​ 深层侦听器​ 即时回调的侦听器​ 回调的触发时机​ this.$watch()​ 停止侦听器​        计算属性允许我们声明性地计算衍生值。然而在有些情况下,我们需要在状态变化时执行一些“副作用”:例如更改 DOM,或是根据异步操作的结果去修改另一处的状态

    2023年04月13日
    浏览(54)
  • Vue中watch侦听器用法

    watch 需要侦听特定的数据源,并在单独的回调函数中执行副作用 watch第一个参数监听源 watch第二个参数回调函数cb(newVal,oldVal) watch第三个参数一个options配置项是一个对象{ immediate :true //是否立即调用一次 deep :true //是否开启深度监听 flush :“pre” // 更新时机 } flush配置项 p

    2024年02月06日
    浏览(55)
  • 【源码系列#04】Vue3侦听器原理(Watch)

    专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核💪推荐🙌 欢迎各位ITer关注点赞收藏🌸🌸🌸 侦听一个或多个响应式数据源,并在数据源变化时调用所给的回调函数 第一个参数可以是不同形式的“数据源”:它可以是一个 ref (包括计算属性

    2024年02月04日
    浏览(65)
  • Vue Composition API之侦听器watch/watchEffect

    在日常的开发中,很多时候我们需要去对一些状态进行监听,比如当显示学生的成绩列表时,我们使用一个学生的学号student_num作为请求成绩的参数,如果没有监听机制,当学号student_num改变时,我们需要依赖用户的操作去刷新成绩。但是有了侦听器,我们可以通过侦听器去监

    2024年02月08日
    浏览(47)
  • Vue3前端开发,watch数据侦听器的立即执行

    Vue3前端开发,watch数据侦听器的立即执行!实际上,我们可以通过回调函数的后面,再追加一个对象,来设置这个参数,immediate:true.来实现一种立即执行的效果。在页面记载完成后,马上就会执行一次watch. 如上所示,我们在回调函数的后面,追加了一个参数,是一个对象类型

    2024年01月18日
    浏览(51)
  • 微信小程序实现页面数据侦听器,类似vue的watch

    既然小程序的组件已经有Observer功能,那为什么还要手写watch功能呢? Observer只能在Component中使用,没法在Page中使用。若是想在Page中监控某一数据的变化,Observer做不到。 Observer属于小程序的新功能,只能在高版本微信使用,低版本微信无法使用。公司的小程序就因为使用了

    2024年02月03日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包