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

网站建设与推广范文精准流量推广

网站建设与推广范文,精准流量推广,wordpress 论坛模版,欧美网站模板 psd我们都知道监听器的作用是在每次响应式状态发生变化时触发,在组合式 API 中,我们可以使用 watch()函数和watchEffect()函数, 当你更改了响应式状态,它可能会同时触发 Vue 组件更新和侦听器回调。 默认情况下,用户创建的侦听器回…

我们都知道监听器的作用是在每次响应式状态发生变化时触发,在组合式 API 中,我们可以使用 watch()函数watchEffect()函数,

当你更改了响应式状态,它可能会同时触发 Vue 组件更新和侦听器回调。

默认情况下,用户创建的侦听器回调,都会在 Vue 组件更新之前被调用。这意味着你在侦听器回调中访问的 DOM 将是被 Vue 更新之前的状态。

那么,我们来看一下,怎么才能好好的使用他们呢?他们之间又有什么区别呢?

watch()函数

watch 需要侦听特定的数据源,比如侦听一个 ref,watch 的第一个参数可以是不同形式的“数据源”:它可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组,如下:

const x = ref(0)
const y = ref(0)// 单个 ref
watch(x, (newX) => {console.log(`x is ${newX}`)
})// getter 函数
watch(() => x.value + y.value,(sum) => {console.log(`sum of x + y is: ${sum}`)}
)// 多个来源组成的数组
watch([x, () => y.value], ([newX, newY]) => {console.log(`x is ${newX} and y is ${newY}`)
})const obj = reactive({ count: 0 })
//传入一个响应式对象
watch(obj, (newValue, oldValue) => {// 在嵌套的属性变更时触发// 注意:`newValue` 此处和 `oldValue` 是相等的// 因为它们是同一个对象!
})obj.count++watch(() => obj.count,(newValue, oldValue) => {// 注意:`newValue` 此处和 `oldValue` 是相等的// *除非* obj.count 被整个替换了},{ deep: true }
)

注意,你不能直接侦听响应式对象的属性值

const obj = reactive({ count: 0 })// 错误,因为 watch() 得到的参数是一个 number
watch(obj.count, (count) => {console.log(`count is: ${count}`)
})

这里需要用一个返回该属性的 getter 函数


// 提供一个 getter 函数
watch(() => obj.count,(count) => {console.log(`count is: ${count}`)}
)

watch 默认是懒执行的:仅当数据源变化时,才会执行回调。但在某些场景中,我们希望在创建侦听器时,立即执行一遍回调。举例来说,我们想请求一些初始数据,然后在相关状态更改时重新请求数据。

我们可以通过传入 immediate: true 选项来强制侦听器的回调立即执行:

watch(source, (newValue, oldValue) => {// 立即执行,且当 `source` 改变时再次执行
}, { immediate: true })

watchEffect()函数

watchEffect() 允许我们自动跟踪回调的响应式依赖。

const todoId = ref(1)
const data = ref(null)watchEffect(async () => {const response = await fetch(`https://jsonplaceholder.typicode.com/todos/${todoId.value}`)data.value = await response.json()
})

这个例子中,回调会立即执行,不需要指定 immediate: true。在执行期间,它会自动追踪 todoId.value 作为依赖(和计算属性类似)。每当 todoId.value 变化时,回调会再次执行。有了 watchEffect(),我们不再需要明确传递 todoId 作为源值

watchEffect() 适合有多个依赖项的侦听器对于这种只有一个依赖项的例子来说,好处相对较小。此外,如果你需要侦听一个嵌套数据结构中的几个属性,watchEffect() 可能会比深度侦听器更有效,因为它将只跟踪回调中被使用到的属性,而不是递归地跟踪所有的属性。

如果想在侦听器回调中能访问被 Vue 更新之后的 DOM,你需要指明 flush: ‘post’ 选项,
后置刷新的 watchEffect() 有个更方便的别名 watchPostEffect():

import { watchPostEffect } from 'vue'watchPostEffect(() => {/* 在 Vue 更新后执行 */
})

watch 与 watchEffect之间的联系与区别

watch 和 watchEffect 都能响应式地执行有副作用的回调。它们之间的主要区别是追踪响应式依赖的方式

watch 只追踪明确侦听的数据源。它不会追踪任何在回调中访问到的东西。另外,仅在数据源确实改变时才会触发回调。watch 会避免在发生副作用时追踪依赖,因此,我们能更加精确地控制回调函数的触发时机。

watchEffect,则会在副作用发生期间追踪依赖。它会在同步执行过程中,自动追踪所有能访问到的响应式属性。这更方便,而且代码往往更简洁,但有时其响应性依赖关系会不那么明确。适合有多个依赖项的侦听器

http://www.15wanjia.com/news/196663.html

相关文章:

  • 推广网站建设个人网站模板怎么做
  • 西安网站seo公司建设网站需要的步骤
  • 网站建设相关新闻校园网站建设的意义
  • 外卖网站那家做的好处上海阳性增多
  • 凡客诚品网站推广网络推广文案策划
  • 制作网站参考案例上传 wordpress
  • 可用来做外链推广的网站网站项目团队介绍怎么写
  • wordpress本地网站上传wordpress栏目分类
  • 怎样查看网站是否备案网站怎么自适应屏幕大小
  • 做曖网站网站做三层结构
  • 武冈企业建站新产品营销策划
  • 安徽建工集团网站手机网站首页模板
  • 房地产网站模板库连云港百度推广总代理
  • 北京网站推广外包wordpress外链跳转过渡页插件
  • 石家庄站内换乘示意图厦门seo顾问
  • php网站如何上传数据库网站免费优化平台
  • 企业管理软件销售好做吗seo推广需要网站吗
  • 企业网站开发的功能灰系网站
  • 哈尔滨网站关键词优化排名电子商务最好的出路
  • o2o网站做推广公司网站建设原因分析
  • 网站质量需求厦门律师网站建设
  • 加强部门网站建设工作手机浏览器输入网址
  • 个人网站有哪些动画专业大学排名前十强
  • 网站是什么时候出现的电子烟网站建设
  • 音乐网站开发工具浙江网站建设商城价格
  • 网站备案抽查通过网站设计论文的题目
  • 专门卖电子产品的网站公司网站简介怎么做
  • 网站的首页设计电子商务网站建设的流程图
  • 酷炫html5网站网站建设用户量分析
  • 做网站哪个平台好江西网