vue3 nextTick() 的应用

vue3 nextTick() 的应用

Vue3中,可以使用nextTick函数来延迟执行某些操作,这些操作会在下一次DOM更新周期之后执行。这个函数通常用于在数据更新后,等待DOM更新之后执行一些操作,比如获取DOM元素的尺寸、位置等。

nextTick()

例如,以下一个切换元素显示的组件:

<template>
  <div>
    <button @click="handleClick">显示/移除</button>
    <div v-if="show" ref="content">我是一个元素</div>
  </div>
</template>
<script setup>
import { ref } from 'vue'
const show = ref(true)
const content = ref()
const handleClick = () => {
  show.value = !show.value
  console.log(show.value, content.value)//true null
}
</script>

打印结果:

vue3 nextTick() 的应用
image.png

如果show是true,那么content是null,这意味着 DOM 与组件的数据不同步。

我们加上nextTick()

<template>
  <div>
    <button @click="handleClick">显示/移除</button>
    <div v-if="show" ref="content">我是一个元素</div>
  </div>
</template>
<script setup>
import { ref, nextTick } from 'vue'
const show = ref(true)
const content = ref()
const handleClick = () => {
  show.value = !show.value
  nextTick(() => {
    console.log(show.value, content.value)
  })
}
</script>

打印结果:vue3 nextTick() 的应用

当show为true时,获取到dom。

nextTick() 与异步/等待

如果nextTick()不带参数调用,则该函数返回一个promise,该promise在组件数据更改到达 DOM 时解析。

这有助于利用更具可读性的async/await语法。如下例子:

<template>
  <div>
     <button @click="handleClick">显示/移除</button>
    <div v-if="show" ref="content">我是一个元素</div>
  </div>
</template>
<script setup>
import { ref, nextTick } from 'vue'
const show = ref(true)
const content = ref()
const handleClick = async () => {
  show.value = !show.value
   console.log(show.value, content.value)
  await nextTick()
  console.log(show.value, content.value)
}
</script>

执行结果:vue3 nextTick() 的应用

总结

当你更改组件的数据时,Vue3 会异步更新 DOM。

如果你想捕捉组件数据变化后 DOM 更新的时刻,那么你需要使用nextTick(callback) 函数。

它们的单个callback参数在 DOM 更新后立即被调用:并且你可以保证获得与组件数据同步的最新 DOM。

或者,如果你不向nextTick() 提供回调参数,那么这些函数将返回一个在 DOM 更新时被解析的promise

查看更多文章请关注公众号:大前端编程教学



原文始发于微信公众号(大前端编程教学):vue3 nextTick() 的应用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/224215.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!