//监听当userName值发生...">
最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 七日打卡-Vue中watch用法

    正文概述 掘金(LXX5785)   2021-01-17   427

    在Vue中,用watch来响应数据的变化,示例代码如下,

    第一种方式

    <input type="text" v-model="userName"/>  
    //监听当userName值发生变化时触发
    watch: {
    	userName (newName, oldName) {
    		console.log(newName)
    	}
    }
    

    第一种方式有一个缺点: 就是当值第一次绑定的时候 不会执行监听函数,只有当值改变的时候才会执行。

    如果我们想在第一次绑定的时候执行此监听函数,则需要设置immediate为true。比如当父组件向子组件动态传值时,子组件props首次获取到父组件传来的默认值时,也需要执行函数,此时就需要将immediate设为true。

    第二种方式

    watch: {
    	userName: {
    		handler (newName, oldName) {
    			console.log(newName)
    		},
    		immediate: true
    	}
    }
    

    immediate表示在watch中首次绑定的时候,是否执行handler,值为true则表示在watch中声明的时候,就立即执行handler方法,值为false,则和一般使用watch一样,在数据发生变化的时候才执行handler。

    当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够监听到变化,此时就需要deep属性对对象进行深度监听。

    第三种方式

    <input type="text" v-model="cityName.name" />
    data (){
    	return {
    		cityName: 
    		{
    		name:'北京',
    		location: '中国'
    		}
    	}
    },
    watch: {
    	cityName: {
    		handler(newName, oldName) {
    			console.log(newName)
    		},
    		immediate: true,
    		deep: true
    	}
    }
    

    注:监测为对象的时候,newVal == oldVal

    此时会给cityName的所有属性都加上监听函数,如果属性较多时,每个属性值的变化都会执行handler。如果只需要监听对象中的一个属性值,则可以做以下优化:使用字符串的形式监听对象属性:

    watch: {
    	'cityName.name': {
    		handler(newName, oldName) {
    			console.log(newName)
    		},
    		immediate: true,
    		deep: true
    	}
    }
    

    • 数组的变化不需要深度监听;
    • 在watch中不要使用箭头函数,因为箭头函数中的this是指向当前作用域.

    拓展阅读 vue中Computed 和 Watch的使用和区别

    Computed

    可以关联多个实时计算的对象,当这些对象中的其中一个改变时都会触发这个属性,具有缓存能力,所以只有当数据再次改变时才会重新渲染,否则就会直接拿取缓存中的数据。

    例如,当我们想让div元素的背景色和文字颜色一致时,我们就可以使用computed属性。此时computed只会在初次渲染和文字颜色改变的情况下才会触发。其他情况下直接从缓存中读取。

    七日打卡-Vue中watch用法

    Watch

    当你需要在数据变化响应时,执行异步操作,或高性能消耗的操作,自定义watch的方式就会很有帮助。


    起源地下载网 » 七日打卡-Vue中watch用法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元