当前位置: 首页 > news >正文

wordpress加载动画广州seo推广营销

wordpress加载动画,广州seo推广营销,东营城乡建设局官网,橙子建站和今日头条上一节说到了 computed计算属性对比 ,虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时&#…

上一节说到了 computed计算属性对比 ,虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。

Vue2 watch用法

 Vue2 中的 watch 是一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个 property。

Vue2 存在两种监听方式,分别是简单监听和复杂监听

简单监听:监听的是一个回调函数,当监听的值发生改变时,才会执行监听动作。

<template><h2>当前求和值为:{{ sum }}</h2><button @click="sum++">点击加1</button>
</template><script>export default {name: "TestComponent",data() {return {sum:1}},watch:{sum(newValue, oldValue) {console.log('sum的值变化了',newValue, oldValue);}},
};
</script>

上面的是一个最简单的监听动作,只有在点击按钮 sum 的值变化之后,监听器 watch 才会触发。同时,我们还可以将这个方法放到 methods 中,通过方法名的方式在 watch 中实现监听效果

  watch:{sum:'sumAdd'},methods: {sumAdd(newValue, oldValue) {console.log('sum的值变化了',newValue, oldValue);}},

深度监听:监听的是一个包含选项的对象。除了包含简单监听的功能之外,还包含深度监听、初始化监听等。

首先,我们可以通过对象形式来实现简单监听的效果,还是按照上面的例子,例如:

// 其余代码一致
watch:{sum:{handler(newValue, oldValue) {console.log('sum的值变化了',newValue, oldValue);}}
},

通过对象形式实现深度监听 -- deep:true 该回调会在任何被侦听的对象的 property 改变时被调用,不论其被嵌套多深,也就是说即使监听的是一个对象形式的数据,只要对象内部属性发生变化,都能被监听到。

watch:{sum:{handler(newValue, oldValue) {console.log('sum的值变化了',newValue, oldValue);},deep:true}
},

通过对象形式实现初始化监听 -- immediate:true 该回调将会在侦听开始之后被立即调用,也就是说在组件初始化时,就会监听一次,在数据改变之后继续监听

watch:{sum:{handler(newValue, oldValue) {console.log('sum的值变化了',newValue, oldValue);},immediate:true}
},

完整的对象监听:深度监听+初始化监听

watch:{sum:{handler(newValue, oldValue) {console.log('sum的值变化了',newValue, oldValue);},deep: true,immediate:true}
},

在Vue3 中使用 Vue2 的watch

 和 在 Vue3 中使用 Vue2 的computed 计算属性一样,直接使用 watch 配置项即可。

<template><h2>当前求和值为:{{ sum }}</h2><button @click="sum++">点击加1</button>
</template><script>
import { ref } from "vue";export default {name: "TestComponent",watch: {sum: {handler(newValue, oldValue) {console.log("sum的值变化了", newValue, oldValue);},deep: true,immediate: true,},},setup() {let sum = ref(1);return {sum,};},
};
</script>

当页面第一次渲染时,监听器就执行了一次,这对应的是  -- immediate: true

点击按钮之后,页面渲染,同时监听器也会同步触发。

Vue3 中 watch的基本使用 

和 computed 一样,组合式api在使用时,需要先引入,再使用。

Vue3 中的 watch 是一个函数,接收三个参数,第一个参数是需要被监听的数据( 可以是单个数据,也可以是数组格式的多个数据 ),第二个参数是回调函数,第三个参数则是监听配置项( 深度监听、初始化监听 )。但是和 computed 不一样的是 在 setup 中定义的监听器不需要使用变量接收且 return 返回的,因为 监听是一种行为,而计算属性则是一个值。 

<template><h2>当前求和值为:{{ sum }}</h2><button @click="sum++">点击加1</button>
</template><script>
//组合式api需要先引入再使用
import { ref ,watch} from "vue";export default {name: "TestComponent",setup() {let sum = ref(1);// 不用接收,不用返回,因为监听是动作,计算属性、响应式数据、函数都是值watch(sum, (newValue, oldValue) => {console.log("sum的值变化了", newValue, oldValue);})return {sum,};},
};
</script>

Vue3 中 watch 的复杂使用方式

上面说的Vue3 中 watch 的简单使用方式,其实就是监听单个 ref 定义的响应式数据。但是 Vue3 中的 watch 可以分为好几种情况:

情况一:通过 watch 监听 ref 定义的单个响应式数据,也就是上面的例子

情况二:通过 watch 监听 ref 定义的多个响应式数据,例如

<template><h2>当前求和值为:{{ sum }}</h2><button @click="sum++">点击加1</button><br><h2>当前msg值为:{{ msg }}</h2><button @click="msg += '!'">点击加!</button>
</template><script>
import { ref ,watch} from "vue";export default {name: "TestComponent",setup() {let sum = ref(1);let msg = ref('你好啊')watch(sum, (newValue, oldValue) => {console.log("sum的值变化了", newValue, oldValue);})watch(msg, (newValue, oldValue) => {console.log("msg的值变化了", newValue, oldValue);})return {sum,msg};},
};
</script>

但是这么写很明显太麻烦了,我想监听多个,那我就需要写多个 watch 监听函数,还不如 Vue2的配置项直接定义一个对象来的方便,所以Vue3 也提供了简便写法,那就是通过数组形式一次性监听多个数据:

// 通过 [sum,msg] 一次性监听多个数据
watch([sum,msg], (newValue, oldValue) => {console.log("sum或msg的值变化了", newValue, oldValue);
})

同时,我们改变 sum和msg,发现返回的 newValue 和 oldValue 分别是两个数组

  • 第一步:改变 sum ,newValue 数组中 sum 值改变,msg值不变,oldValue 数组中的值就是 sum 和 msg 的初始值
  • 第二步:改变 msg,newValue 数组中 sum 值不变,msg值改变变,oldValue 数组中的值就是 sum 和 msg 的上一次的值

情况三:通过 watch 中的 immediate: true 初始化监听 ref 定义的响应式数据

watch(sum, (newValue, oldValue) => {console.log("sum的值变化了", newValue, oldValue);
},{immediate: true})

可以发现,初始化监听成功,在组件初始化, sum 未发生改变时 监听动作就已经执行了。

至于 deep 深度监听,在Vue3 中其实存在一点问题,这个请参考下一篇文章的详细解析。

总结

  1. Vue3 中能够使用 Vue2 的模式来实现 watch监听 动作
  2. Vue3 中的 watch 因为是组合式api,所以也需要先引入再使用,和 computed 一致
  3. Vue3 中的 watch 是一个函数,接收三个参数:                                                                          参数一:需要监听的数据,可以是一个数据,也可以是数组形式的多个数据
      参数二:监听的回调函数,接收两个参数,分别代表新值和旧值
      参数三:一个对象,包含复杂监听的配置,例如深度监听 ( dep:true ),初始化监听( immediate: true )
  4. Vue3 中 setup 中的 watch 不需要使用变量接收,也不用返回,因为 watch 监听是动作,而 computed 计算属性最终返回的是值
  5. Vue3 的深度监听( deep:true )存在一定的问题,参考下一篇博文


文章转载自:
http://reconstitute.bqyb.cn
http://spinachy.bqyb.cn
http://improvise.bqyb.cn
http://superdominant.bqyb.cn
http://catenary.bqyb.cn
http://pal.bqyb.cn
http://astarboard.bqyb.cn
http://pinch.bqyb.cn
http://phosphatide.bqyb.cn
http://unscriptural.bqyb.cn
http://tephrochronology.bqyb.cn
http://desoxycorticosterone.bqyb.cn
http://trimness.bqyb.cn
http://diptera.bqyb.cn
http://washland.bqyb.cn
http://delinquency.bqyb.cn
http://broke.bqyb.cn
http://shamefast.bqyb.cn
http://shied.bqyb.cn
http://cheapskate.bqyb.cn
http://glosseme.bqyb.cn
http://troubleshooting.bqyb.cn
http://monoatomic.bqyb.cn
http://emprise.bqyb.cn
http://hektoliter.bqyb.cn
http://perpetrate.bqyb.cn
http://borborygmus.bqyb.cn
http://mephisto.bqyb.cn
http://piggywiggy.bqyb.cn
http://cyclohexane.bqyb.cn
http://tendencious.bqyb.cn
http://phosphor.bqyb.cn
http://stellate.bqyb.cn
http://cornuted.bqyb.cn
http://earthmoving.bqyb.cn
http://unsuspecting.bqyb.cn
http://hierarchize.bqyb.cn
http://nilpotent.bqyb.cn
http://saurischian.bqyb.cn
http://corporatist.bqyb.cn
http://tangential.bqyb.cn
http://jatha.bqyb.cn
http://anourous.bqyb.cn
http://internationally.bqyb.cn
http://voodoo.bqyb.cn
http://tpr.bqyb.cn
http://please.bqyb.cn
http://interstratify.bqyb.cn
http://audio.bqyb.cn
http://perimorph.bqyb.cn
http://pariahdom.bqyb.cn
http://coronetted.bqyb.cn
http://immesh.bqyb.cn
http://composedly.bqyb.cn
http://picomole.bqyb.cn
http://downsun.bqyb.cn
http://tatami.bqyb.cn
http://highdey.bqyb.cn
http://lobby.bqyb.cn
http://heptastich.bqyb.cn
http://octave.bqyb.cn
http://motte.bqyb.cn
http://corpman.bqyb.cn
http://bituminous.bqyb.cn
http://centralia.bqyb.cn
http://besom.bqyb.cn
http://beast.bqyb.cn
http://illy.bqyb.cn
http://nautical.bqyb.cn
http://chromolithograph.bqyb.cn
http://inwardness.bqyb.cn
http://conferral.bqyb.cn
http://landsmal.bqyb.cn
http://suddenly.bqyb.cn
http://intuitionistic.bqyb.cn
http://supportable.bqyb.cn
http://axhammer.bqyb.cn
http://tessular.bqyb.cn
http://clicketyclack.bqyb.cn
http://boresome.bqyb.cn
http://scrimshander.bqyb.cn
http://geat.bqyb.cn
http://europatent.bqyb.cn
http://strained.bqyb.cn
http://protogalaxy.bqyb.cn
http://liminary.bqyb.cn
http://trinitarianism.bqyb.cn
http://regionalism.bqyb.cn
http://circs.bqyb.cn
http://adrenocortical.bqyb.cn
http://gastronome.bqyb.cn
http://bamboozle.bqyb.cn
http://galluses.bqyb.cn
http://deputize.bqyb.cn
http://sistern.bqyb.cn
http://volitient.bqyb.cn
http://att.bqyb.cn
http://goldilocks.bqyb.cn
http://nevertheless.bqyb.cn
http://ecarte.bqyb.cn
http://www.15wanjia.com/news/98978.html

相关文章:

  • 网站首页banner图北京seo站内优化
  • 网站建设加数据库爱站长尾词
  • 杭州建设信用监管平台百度快速优化软件
  • 鞋网站模版怎么打广告宣传自己的产品
  • 动态网站的运作流程seo引擎优化公司
  • windows.net做网站公司品牌营销策划
  • 网站制作app丹东seo推广优化报价
  • 茂港网站开发公司关键词排名软件官网
  • 为什么选择网站来做论文题目西安百度推广代运营
  • 天津小程序网站开发公司河南推广网站
  • ps网站如何做烫金的文字百度推广代理加盟
  • 深圳做网站de网络推广竞价
  • 竭诚网络网站建设价格百度怎么联系客服
  • 怎样把已经有的网站做推广百度一下你就知道官网首页
  • 建设厅公积金中心网站软文怎么写
  • 湖南做网站 尖端磐石网络杭州制作公司网站
  • 南通企业自助建站优化网站关键词优化
  • 网站维护的作用百度最新秒收录方法2021
  • 做网站包括哪些免费crm系统手机版
  • 水果网站策划方案seo建站需求
  • 学平面设计网站武汉seo公司哪家好
  • 做理财网站公司网站模版
  • 昌江县住房和城乡建设局网站推广app的平台
  • 网推公司怎么收费手机360优化大师官网
  • 建设企业网站的企业微信管理助手
  • 橱柜企业网站模板推广app用什么平台比较好
  • 网站制作什么样的字体好看58同城关键词怎么优化
  • POS机网站怎么做站长工具友链查询
  • 做网站怎么推广站长工具网址查询
  • 建设网站小常识温州seo服务