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

河北建设网站企业锁在哪下载做微信的网站秀客

河北建设网站企业锁在哪下载,做微信的网站秀客,网页设计的标准尺寸,室内设计网站平台文章目录Watch侦听器1. 基础概念1.1. Watch的基本用法例子1#xff1a;监听单个ref的值#xff0c;直接监听例子2#xff1a;监听多个ref的值#xff0c;采用数组形式例子3#xff1a;深度监听例子4#xff1a;监听reactive响应式对象单一属性#xff0c;采用回调函数的… 文章目录Watch侦听器1. 基础概念1.1. Watch的基本用法例子1监听单个ref的值直接监听例子2监听多个ref的值采用数组形式例子3深度监听例子4监听reactive响应式对象单一属性采用回调函数的形式2. Watch的高级用法2.1. immediate2.2. deep2.3. flush3. Watch的性能优化3.1. 使用computed代替watch3.2. 使用throttle和debounce控制回调函数的执行频率总结Watch侦听器 在Vue3中watch特性进行了一些改变和优化。与computed不同watch通常用于监听数据的变化并执行一些副作用例如发送网络请求、更新DOM等。本文将介绍Vue3中watch特性。 1. 基础概念 1.1. Watch的基本用法 watch(source, callback, options?)其中source表示要监听的数据可以是一个响应式的数据对象、一个计算属性或一个方法的返回值callback表示当数据发生变化时要执行的回调函数options表示watch的一些配置选项例如immediate、deep、flush等。 例子1监听单个ref的值直接监听 templatediv!-- 侦听单个变量 --case1input v-modeluserName typetext/div /templatescript setup langts import { ref, watch } from vue;const userName refstring(张三);watch(userName, (newVal, oldVal) {console.log(newVal, oldVal); }) /script 例子2监听多个ref的值采用数组形式 templatediv!-- 侦听多个变量 --case1input v-modeluserName typetextcase2input v-modelage typetext/div /templatescript setup langts import { ref, watch } from vue;const userName refstring(张三); const age refnumber(18);watch([userName, age], (newVal, oldVal) {console.log(newVal, oldVal); }) /script例子3深度监听 如果用ref实现深层次对象的响应式侦听的时候需要开启深度侦听用reactive实现响应式开启deep和不开启deep效果是一样的 templatediv!-- 深度侦听 --case1input v-modelobj.foo.bar.name typetext/div /templatescript setup langts import { reactive, watch } from vue;const obj reactive({foo: {bar: {name: 张三}} }) watch(obj, (newVal, oldVal) {console.log(newVal, oldVal); }, {// deep: true, // 深度侦听, 监听ref创建的响应式对象必须开启 }) /script注意此处监听的新值和旧值相同主要是因为新旧值引用地址是相同的此处可采取computed计算属性先实现深拷贝。示例如下 import { reactive, watch, computed } from vue;const obj reactive({foo: {bar: {name: 张三}} })let obj1 reactive({})obj1 computed(() {return JSON.parse(JSON.stringify(obj)) })watch(obj1, (newVal, oldVal) {console.log(newVal, oldVal); })例子4监听reactive响应式对象单一属性采用回调函数的形式 templatediv!-- 侦听单一属性 --case1input v-modelobj.foo.bar.name typetext/div /templatescript setup langts import { reactive, watch } from vue;const obj reactive({foo: {bar: {name: 张三}} }) watch(() obj.foo.bar.name, (newVal, oldVal) {console.log(newVal, oldVal);} ) /script2. Watch的高级用法 在Vue3中watch特性进行了一些改变和优化。除了基本的watch用法外还有一些高级用法可以使watch更加灵活和方便。下面是几个常用的高级用法 2.1. immediate immediate选项可以用于指定watch在组件创建时立即执行一次回调函数而不必等待数据的变化。例如 import { reactive, watch } from vueconst state reactive({count: 0 })watch(() state.count,(newVal, oldVal) {console.log(count值从${oldVal}变成了${newVal})},{ immediate: true } ) 在上面的例子中我们使用immediate选项将watch的回调函数在组件创建时立即执行了一次输出了初始值。当state.count变化时watch的回调函数还会被再次执行。 2.2. deep deep选项可以用于深度监听一个对象或数组的变化。当我们监听一个对象或数组时默认情况下只会监听对象或数组的引用变化而不会监听其内部数据的变化。如果我们需要深度监听对象或数组内部数据的变化可以使用deep选项。例如 import { reactive, watch } from vueconst state reactive({todos: [{ id: 1, text: 学习Vue3, done: false },{ id: 2, text: 学习React, done: false },{ id: 3, text: 学习Angular, done: true }] })watch(() state.todos,(newVal, oldVal) {console.log(todos数组发生了变化)},{ deep: true } )state.todos[0].done true // 输出todos数组发生了变化 注意当我们使用deep选项时watch的性能会受到一定的影响因为Vue需要对对象或数组进行递归遍历。因此只有在必要的情况下才应该使用deep选项。 2.3. flush flush选项可以用于指定watch的回调函数在何时执行。例如 sync同步模式下执行pre在数据变化之前执行回调函数post在数据变化之后执行回调函数但是需要等待所有依赖项都更新后才执行 import { reactive, watch } from vueconst state reactive({count: 0 })watch(() state.count,(newVal, oldVal) {console.log(count值从${oldVal}变成了${newVal})},{ flush: sync } )state.count // 输出count值从0变成了1 在上面的例子中我们使用flush选项将watch的回调函数在同步模式下执行了这意味着watch的回调函数会在数据变化之后立即执行。当我们执行state.count时会触发count的变化从而执行watch的回调函数并输出变化的值。 3. Watch的性能优化 在使用watch时为了优化性能我们可以采取以下一些方法 3.1. 使用computed代替watch 在有些情况下如果我们只是想监听一个值的变化并在变化时执行一些操作我们可以使用computed代替watch。computed可以自动缓存计算的结果只有在它的依赖项变化时才会重新计算因此可以提高一定的性能。例如 import { reactive, computed } from vueconst state reactive({count: 0 })const doubleCount computed(() {return state.count * 2 })console.log(doubleCount.value) // 输出0state.countconsole.log(doubleCount.value) // 输出2 3.2. 使用throttle和debounce控制回调函数的执行频率 在有些情况下我们可能会频繁地监听一个值的变化并在变化时执行一些操作。如果回调函数执行的太频繁会影响性能。为了避免这种情况我们可以使用throttle和debounce控制回调函数的执行频率。 throttle和debounce都是用于控制函数执行频率的工具函数。throttle可以用于控制函数在一定时间内只能执行一次而debounce可以用于控制函数在一定时间内不会连续执行。例如 import { reactive, watch } from vue import { throttle } from lodash-esconst state reactive({count: 0 })watch(() state.count,throttle((newVal, oldVal) {console.log(count值从${oldVal}变成了${newVal})}, 1000) )state.count 总结 watch特性是Vue中非常重要的一个特性通过学习watch的基础概念、高级用法、实战应用和性能优化方法可以帮助我们更好地理解和应用Vue。
http://www.hkea.cn/news/14392900/

相关文章:

  • 加盟网站系统手机网站空间申请
  • 西宁网站开发公司定制类做网站多少钱
  • 深圳 网站建设网站可行性分析
  • 沈阳哪里做网站备案域名出租
  • 英国购物网站排名无锡网站建设哪家公司比较好
  • 河南秋实网站建设搭建网站建设
  • 网站首页排版设计杭州市建设信用网
  • 系统网站推广方案怎么做诸城网络科技网站建设
  • 多人视频网站开发公司移动物联网流量卡
  • 互助金融网站制作网站建设费摊销
  • 图书馆网站建设公司做问卷有哪些网站
  • cms做网站怎样创建网站教程
  • 合肥 网站建设公司浙江网络公司排名
  • 黄页网络的推广网站有哪些好内容型网站的运营
  • 做网站是什么职业泉州市建设局网站
  • 网站开发需要什么人才域客式单页网站能申请域名吗
  • 重庆企业公司网站建设中企动力官网网站
  • 家政门户网站源码上海室内设计有限公司
  • 仪器网站模板网站建设 图书管理网站
  • 河南省建设培训中心网站3d建模人物软件
  • dw做网站的搜索栏怎么做个人网页设计硬件需求
  • 苏州网站推广软件网站建设与网页设计教程
  • 商城网站建设如何交谈淄博网站建设设计
  • 网站建设基础 ppt绿色农产品网站
  • wordpress新站SEO优化wordpress火车头发布规则
  • 网站色彩运用网站建设实训报告的内容怎么写
  • 网站后台从哪里进去建设网站平台
  • 自助建站免费网站全网网络营销推广
  • 淘宝推广网站建设初级买题做哪个网站好
  • 北京网站设计的公司价格河南郑州软件开发公司