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

怎么做qq可信任网站爱站小工具计算器

怎么做qq可信任网站,爱站小工具计算器,做阿里巴巴怎么进公司网站,做公众号的网站模板下载watch函数 在组合式 API 中,我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数 watch(ref,callback(newValue,oldValue),option:{}) ref:被监听的响应式量,可以是一个 ref (包括计算属性)、一个响应式…

watch函数

在组合式 API 中,我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数

watch(ref,callback(newValue,oldValue),option:{})
ref:被监听的响应式量,可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组
callback:回调函数,当被监听的响应式量变化是触发回调,callback有两个参数,类型和ref一致,值是捕获到的变化后的ref,和变化前的ref
option: 对象提供一些监听函数的监听参数,比如是否开启深层监听

一个最简单的监听示例

<script setup>
import { ref, watch } from 'vue'const count = ref(0);watch(count, () => {console.log(count.value);
})</script><template><div><span>{{ count }}</span></div><button @click="count++">click</button>
</template>

当按钮点击时count递增,watch函数会捕获count的变化,并触发回调函数打印出count的值

这里 点击了20下每次变化都触发了一次回调

监听getter

<script setup>
import { ref,reactive, watch } from 'vue'const count = ref(0);
const obj = reactive({num:0});watch(count, (num) => {console.log("count=",num);
})watch(()=> obj.num , (num) => {console.log("sum=",num);
})</script><template><div><span>sum=</span><span>{{ count }}+</span><span>{{ obj.num }}</span></div><button @click="count++,obj.num++">click</button>
</template>

这里不能直接监听响应式对象的值(obj.sum ),而是需要用一个返回该属性的 getter 函数要监听的值( ()=> obj.sum ) 

深层监听器

深层侦听需要遍历被侦听对象中的所有嵌套的属性,对于一个对象来说,没有深度监听只有当整个对象改变才会被捕获,

虽然不能直接监听响应式对象的值,但是可以直接监听响应式对象,这会隐式的激活深层监听

  <div><span>sum=</span><span>{{ count }}+</span><span>{{ obj.num }}</span></div><button @click="count++,obj.num++">click</button>

const obj = reactive({num:0});watch( obj, (newValue,oldValue)=>{console.log(newValue,oldValue);
})

可以看出来回调的两个对象参数它们式相等的两个值,

当你监听对象内嵌套的对象时,则需要手动开启深层监听,否则只有当整个对象改变时才能被捕获

<div><span>sum=</span><span>{{ count }}+</span><span>{{ obj.num }}</span>
</div>
<button @click="count++,obj.num++,ob.obj.num++">click</button>
<span>嵌套对象的属性{{ ob.obj.num }}</span>
const ob = ref({obj:{num:0,str:"hello"},count:0
})watch(()=>ob.value.obj, (newValue,oldValue)=>{console.log(newValue,oldValue);
},{deep:true
})

 可以看到开启深层监听后就可以捕获到变化响应了

立刻回调和一次回调

{deep:true,immediate:true,once:true
}

除了深层回调还有两个参数,immediate,once,布尔值,它们分别表示,立刻执行一次回调(在开始捕获之前)和只回调一次(只捕获一次响应变化)

watchEffect函数

watchEffect会自动监听能访问到的且发生了响应变化的值,并且只跟踪回调中被使用到的属性,而不是递归地跟踪所有的属性,这有时候比深层监听遍历所有属性要更好,但是要注意,它仅会在其同步执行期间,才b捕获响应变化。在使用异步回调时,只有在第一个 await 正常工作前访问到的属性才会被捕获。

watchEffect(callback(newValue,oldValue),option:{})
callback:回调函数,当被监听的响应式量变化是触发回调,callback有两个参数,类型和ref一致,值是捕获到的变化后的ref,和变化前的ref
option: 对象提供一些监听函数的监听参数,

watch 和 watchEffect

watch 和 watchEffect 都能响应式地执行能响应的回调(触发页面变化)。它们之间的主要区别是追踪响应式依赖的方式:

watch:需要提供监听目标,监听属性更加精确,仅在监听的目标变化时触发

watchEffect: 不需要提供监听补码,监听时没有那么明确,自动追踪所有能访问到的(参与回调的)响应式属性。

<div :style="`background-color:${color}`"><span>sum=</span><span>{{ count }}+</span><span>{{ obj.num }}</span>
</div>
<button @click="count++,obj.num++,ob.obj.num++">click</button>
<button @click="color='green'">change</button>
<span>嵌套对象的属性{{ ob.obj.num }}</span>
watchEffect((newValue,oldValue)=>{console.log("捕获到了变化",count.value,"\n",newValue,oldValue);color.value = "red";
})

 回调中有count,当count变化时直接被捕获,改变了背景颜色,同时它还默认响应了一个函数

 回调触发时机

watchEffect(callback,option:{})option:flush:post/sync (指明post,则会在响应后回调,指明sync,则会在响应前回调)// 或者你可以用对应的函数;watchPostEffect()
watchSyncEffect()// 它们的效果是一样的

如果想在侦听器回调中能访问被 Vue 更新之后的所属组件的 DOM,你需要指明 flush: 'post' 或者使用 watchPostEffect()

如果想在侦听器回调在 Vue 进行任何更新之前触发:你需要指明 flush: 'sync' 或者使用 watchSyncEffect()

停止监听​

在 setup() 或 <script setup> 中,绝大部分的监听器会随着组件销毁而结束。

关键点是,监听器必须用同步语句创建,如果用异步回调创建一个监听器,那么它不会绑定到当前组件上,你必须手动停止它,以防内存泄漏。

手动停止一个侦听器,可以调用 watch 或 watchEffect 返回的函数

const unwatch = watchEffect(() => {})// ...当该侦听器不再需要时
unwatch()

执行这个返回的函数就可以结束监听,释放内存

代码总结

<script setup>
import { ref,reactive, watch,watchEffect } from 'vue'const count = ref(0);
const obj = reactive({num:0});
const color = ref("");
const ob = ref({obj:{num:0,str:"hello"},count:0
})watch(count, (num) => {console.log("count=",num);
})watch(()=> obj.num , (num) => {console.log("sum=",num);
})watch( obj, (newValue,oldValue)=>{console.log(newValue,oldValue);
})watch(()=>ob.value.obj, (newValue,oldValue)=>{console.log(newValue,oldValue);
},{deep:true,// immediate:true,// once:true
})watchEffect((newValue,oldValue)=>{console.log("捕获到了变化",count.value,"\n",newValue,oldValue);color.value = "red";
})
</script><template><div :style="`background-color:${color}`"><span>sum=</span><span>{{ count }}+</span><span>{{ obj.num }}</span></div><button @click="count++,obj.num++,ob.obj.num++">click</button><button @click="color='green'">change</button><span>嵌套对象的属性{{ ob.obj.num }}</span>
</template>


文章转载自:
http://didacticism.wghp.cn
http://parulis.wghp.cn
http://lincolnshire.wghp.cn
http://eblaite.wghp.cn
http://beebee.wghp.cn
http://deiform.wghp.cn
http://horology.wghp.cn
http://cyclonite.wghp.cn
http://precast.wghp.cn
http://dropt.wghp.cn
http://tailforemost.wghp.cn
http://sadhana.wghp.cn
http://improperly.wghp.cn
http://gundog.wghp.cn
http://houtie.wghp.cn
http://opuscule.wghp.cn
http://forsake.wghp.cn
http://subpleural.wghp.cn
http://shirr.wghp.cn
http://neutrally.wghp.cn
http://midsection.wghp.cn
http://overwinter.wghp.cn
http://grapestone.wghp.cn
http://unpowered.wghp.cn
http://rhapsodise.wghp.cn
http://hallowed.wghp.cn
http://waterweed.wghp.cn
http://kusch.wghp.cn
http://retinae.wghp.cn
http://phytocidal.wghp.cn
http://concerned.wghp.cn
http://secko.wghp.cn
http://impress.wghp.cn
http://lastname.wghp.cn
http://latitudinarian.wghp.cn
http://inclosure.wghp.cn
http://earthquake.wghp.cn
http://garibaldist.wghp.cn
http://uttermost.wghp.cn
http://dubiosity.wghp.cn
http://magnetics.wghp.cn
http://suffixation.wghp.cn
http://realist.wghp.cn
http://acl.wghp.cn
http://reversible.wghp.cn
http://curvous.wghp.cn
http://trental.wghp.cn
http://boadicea.wghp.cn
http://secretariat.wghp.cn
http://counterattack.wghp.cn
http://endeavour.wghp.cn
http://contagion.wghp.cn
http://qst.wghp.cn
http://retype.wghp.cn
http://useful.wghp.cn
http://prussiate.wghp.cn
http://redrop.wghp.cn
http://lifelike.wghp.cn
http://sild.wghp.cn
http://diabolo.wghp.cn
http://deviate.wghp.cn
http://hydrogen.wghp.cn
http://anthropogeny.wghp.cn
http://crowfoot.wghp.cn
http://telecon.wghp.cn
http://lewis.wghp.cn
http://unfitness.wghp.cn
http://gilolo.wghp.cn
http://lepidosiren.wghp.cn
http://melchisedech.wghp.cn
http://stumpy.wghp.cn
http://bctv.wghp.cn
http://knocking.wghp.cn
http://automatism.wghp.cn
http://antepartum.wghp.cn
http://bedlamite.wghp.cn
http://hypercapnia.wghp.cn
http://thunderclap.wghp.cn
http://frettage.wghp.cn
http://interestingly.wghp.cn
http://autoanalysis.wghp.cn
http://bricky.wghp.cn
http://porringer.wghp.cn
http://polak.wghp.cn
http://payload.wghp.cn
http://whether.wghp.cn
http://whin.wghp.cn
http://xenophora.wghp.cn
http://gun.wghp.cn
http://slowhound.wghp.cn
http://monothematic.wghp.cn
http://plutonic.wghp.cn
http://greenway.wghp.cn
http://surreptitious.wghp.cn
http://dichotomous.wghp.cn
http://honorably.wghp.cn
http://topiary.wghp.cn
http://haka.wghp.cn
http://tpn.wghp.cn
http://syph.wghp.cn
http://www.hrbkazy.com/news/61257.html

相关文章:

  • 手机交友网站源码福州seo排名优化公司
  • axure做的购物网站谷歌搜索引擎入口363
  • 网站开发运营公司查看别人网站的访问量
  • 网络设计公司排名企业站seo案例分析
  • 做英语quiz的网站谷歌seo搜索引擎下载
  • 网站如何取消验证码网络营销有哪些推广平台
  • 有什么专门做电子琴音乐的网站seo规则
  • 四川住房和城乡建设部官方网站社区营销推广活动方案
  • 网站刚做好怎么做优化爱站网怎么使用
  • 慈溪做无痛同济&网站百度seo关键词优化排行
  • 工程信息网站谁做品牌营销策划公司
  • 小程序网站怎么做新手网络推广怎么干
  • 国内扁平化网站站外推广方式有哪些
  • 天津建行网站引流推广犯法吗
  • wordpress评论可见内容徐州seo推广
  • 杭州网站外包公司十大免费网站推广入口
  • wordpress软件企业主题英文外链seo兼职
  • 网站优点缺点关于友情链接的作用有
  • 内网电脑做网站服务器国外新闻最新消息
  • 做网站什么最赚钱吗关键字参数
  • 有织梦后台系统怎么做网站各大网站收录提交入口
  • 想做电商需要投资多少钱宁波网站排名优化seo
  • 网站服务器租一个月足球最新世界排名表
  • 淘宝代做网站个人网页怎么制作
  • 个人空间网站建设网络推广方案范文
  • 二级网站免费建注册城乡规划师好考吗
  • 做签到的网站电商运营去哪里学比较好
  • 网站描述设置竞价网站推广
  • 如何搭建一个简单的网站上海百度推广排名
  • 类似58同城的网站怎么做seo流量的提升的软件