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

网站建设图片滑动代码wordpress网易云课堂

网站建设图片滑动代码,wordpress网易云课堂,海淘网站是谁做的,成都网站建设 四川冠辰1、基本示例 计算属性允许我们声明性地计算衍生值。然而在有些情况下#xff0c;我们需要在状态变化时执行一些“副作用”#xff1a;例如更改 DOM#xff0c;或是根据异步操作的结果去修改另一处的状态。 在组合式 API 中#xff0c;我们可以使用 watch 函数在每次响应式状…1、基本示例 计算属性允许我们声明性地计算衍生值。然而在有些情况下我们需要在状态变化时执行一些“副作用”例如更改 DOM或是根据异步操作的结果去修改另一处的状态。 在组合式 API 中我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数 script setup import { ref, watch } from vueconst question ref() const answer ref(Questions usually contain a question mark. ;-)) const loading ref(false)// 可以直接侦听一个 ref watch(question, async (newQuestion, oldQuestion) {if (newQuestion.includes(?)) {loading.value trueanswer.value Thinking...try {const res await fetch(https://yesno.wtf/api)answer.value (await res.json()).answer} catch (error) {answer.value Error! Could not reach the API. error} finally {loading.value false}} }) /scripttemplatepAsk a yes/no question:input v-modelquestion :disabledloading //pp{{ answer }}/p /template 侦听数据源类型 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() 得到的参数是一个 number watch(obj.count, (count) {console.log(count is: ${count}) }) 这里需要用一个返回该属性的 getter 函数 // 提供一个 getter 函数 watch(() obj.count,(count) {console.log(count is: ${count})} ) 2、深层侦听器 直接给 watch() 传入一个响应式对象会隐式地创建一个深层侦听器——该回调函数在所有嵌套的变更时都会被触发 const obj reactive({ count: 0 })watch(obj, (newValue, oldValue) {// 在嵌套的属性变更时触发// 注意newValue 此处和 oldValue 是相等的// 因为它们是同一个对象 })obj.count 相比之下一个返回响应式对象的 getter 函数只有在返回不同的对象时才会触发回调 watch(() state.someObject,() {// 仅当 state.someObject 被替换时触发} ) 你也可以给上面这个例子显式地加上 deep 选项强制转成深层侦听器 watch(() state.someObject,(newValue, oldValue) {// 注意newValue 此处和 oldValue 是相等的// *除非* state.someObject 被整个替换了},{ deep: true } ) 3、即时回调的侦听器 watch 默认是懒执行的仅当数据源变化时才会执行回调。但在某些场景中我们希望在创建侦听器时立即执行一遍回调。举例来说我们想请求一些初始数据然后在相关状态更改时重新请求数据。 我们可以通过传入 immediate: true 选项来强制侦听器的回调立即执行 watch(source,(newValue, oldValue) {// 立即执行且当 source 改变时再次执行},{ immediate: true } ) 4、 一次性侦听器 每当被侦听源发生变化时侦听器的回调就会执行。如果希望回调只在源变化时触发一次请使用 once: true 选项。 watch(source,(newValue, oldValue) {// 当 source 变化时仅触发一次},{ once: true } ) 5、 watchEffect() 侦听器的回调使用与源完全相同的响应式状态是很常见的。例如下面的代码在每当 todoId 的引用发生变化时使用侦听器来加载一个远程资源 const todoId ref(1) const data ref(null)watch(todoId,async () {const response await fetch(https://jsonplaceholder.typicode.com/todos/${todoId.value})data.value await response.json()},{ immediate: true } ) 特别是注意侦听器是如何两次使用 todoId 的一次是作为源另一次是在回调中。 我们可以用 watchEffect 函数 来简化上面的代码。watchEffect() 允许我们自动跟踪回调的响应式依赖。上面的侦听器可以重写为 js 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() 的好处相对较小。但是对于有多个依赖项的侦听器来说使用 watchEffect() 可以消除手动维护依赖列表的负担。此外如果你需要侦听一个嵌套数据结构中的几个属性watchEffect() 可能会比深度侦听器更有效因为它将只跟踪回调中被使用到的属性而不是递归地跟踪所有的属性。 watch vs. watchEffect​ watch 和 watchEffect 都能响应式地执行有副作用的回调。它们之间的主要区别是追踪响应式依赖的方式 watch 只追踪明确侦听的数据源。它不会追踪任何在回调中访问到的东西。另外仅在数据源确实改变时才会触发回调。watch 会避免在发生副作用时追踪依赖因此我们能更加精确地控制回调函数的触发时机。 watchEffect则会在副作用发生期间追踪依赖。它会在同步执行过程中自动追踪所有能访问到的响应式属性。这更方便而且代码往往更简洁但有时其响应性依赖关系会不那么明确。 6、 回调的触发时机 当你更改了响应式状态它可能会同时触发 Vue 组件更新和侦听器回调。 类似于组件更新用户创建的侦听器回调函数也会被批量处理以避免重复调用。例如如果我们同步将一千个项目推入被侦听的数组中我们可能不希望侦听器触发一千次。 默认情况下侦听器回调会在父组件更新 (如有) 之后、所属组件的 DOM 更新之前被调用。这意味着如果你尝试在侦听器回调中访问所属组件的 DOM那么 DOM 将处于更新前的状态。 Post Watchers​ 如果想在侦听器回调中能访问被 Vue 更新之后的所属组件的 DOM你需要指明 flush: post 选项 js watch(source, callback, {flush: post })watchEffect(callback, {flush: post }) 后置刷新的 watchEffect() 有个更方便的别名 watchPostEffect() js import { watchPostEffect } from vuewatchPostEffect(() {/* 在 Vue 更新后执行 */ }) 同步侦听器​ 你还可以创建一个同步触发的侦听器它会在 Vue 进行任何更新之前触发 js watch(source, callback, {flush: sync })watchEffect(callback, {flush: sync }) 同步触发的 watchEffect() 有个更方便的别名 watchSyncEffect() js import { watchSyncEffect } from vuewatchSyncEffect(() {/* 在响应式数据变化时同步执行 */ }) 7、停止侦听器 在 setup() 或 script setup 中用同步语句创建的侦听器会自动绑定到宿主组件实例上并且会在宿主组件卸载时自动停止。因此在大多数情况下你无需关心怎么停止一个侦听器。 一个关键点是侦听器必须用同步语句创建如果用异步回调创建一个侦听器那么它不会绑定到当前组件上你必须手动停止它以防内存泄漏。如下方这个例子 vue script setup import { watchEffect } from vue// 它会自动停止 watchEffect(() {})// ...这个则不会 setTimeout(() {watchEffect(() {}) }, 100) /script 要手动停止一个侦听器请调用 watch 或 watchEffect 返回的函数 const unwatch watchEffect(() {})// ...当该侦听器不再需要时 unwatch() 注意需要异步创建侦听器的情况很少请尽可能选择同步创建。如果需要等待一些异步数据你可以使用条件式的侦听逻辑 // 需要异步请求得到的数据 const data ref(null)watchEffect(() {if (data.value) {// 数据加载后执行某些操作...} })
http://www.zqtcl.cn/news/837662/

相关文章:

  • 政务信息系统网站建设规范上海网站开发制作公司
  • 网站公众平台建设方案湖南seo优化报价
  • 企业网站制作公司discuz 转wordpress
  • 可信网站是什么意思应用软件开发平台
  • 上海市官方网站福建省中嘉建设工程有限公司网站
  • 备案之后怎样把 放到网站上大连建设网球场价格
  • dkp网站开发今天最新新闻
  • 山东省环保厅官方网站建设项目东莞寮步网站设计
  • 网站开发可能遇到的问题附近电脑培训班位置
  • 如何查看域名以前是做什么网站的网站索引下降如何解决
  • 潜江 网站建设扬中话
  • 网站建设项目方案ppt广州建站模板平台
  • 房产部门成立网站免费seo推广软件
  • python做网站好处百度指数分析报告
  • 网站建设挣钱班级介绍网页制作模板
  • 工作室 网站建设app公司
  • 自己做的网站怎么在百度搜索到网页制作论文3000字
  • 如何网站托管中国跨境电商平台有多少
  • 手机p2p网站做平面设计兼职的网站有哪些
  • 贵金属网站建设唐山网站制作工具
  • 网站入门成都网站制作沈阳
  • 接做网站单子的网站做网站要会那些ps
  • 做盗市相关网站wordpress速度优化简书
  • 贵阳手机网站建设公司国内永久免费云服务器
  • 温州做网站定制哪家网络推广公司好
  • 招聘网站怎么做线下活动网站后台管理系统怎么开发
  • 西湖区外贸网站建设商梦建站
  • 网站首页设计注意斗蟋蟀网站建设
  • 石家庄网站建设远策科技网站建设公司人员配备
  • 手机怎么建网站链接专门做鞋子的网站吗