vue3中nextTick()应用实例详解

 更新时间:2023年12月07日 15:06:36   作者:江城开朗的豌豆  
这篇文章主要给大家介绍了关于vue3中nextTick()应用的相关资料,nextTick()等待下一次DOM更新刷新的工具方法,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在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>

打印结果:

如果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>

打印结果: 

当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 会异步更新 DOM。

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

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

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

到此这篇关于vue3中nextTick()应用的文章就介绍到这了,更多相关vue3 nextTick()应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue 中mixin 的用法详解

    Vue 中mixin 的用法详解

    e中提供了一种混合机制--mixins,用来更高效的实现组件内容的复用。这篇文章主要介绍了Vue mixin 的用法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • vue实现登陆页面开发实践

    vue实现登陆页面开发实践

    本文主要介绍了vue实现登陆页面开发实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • vue-cli3配置favicon.ico和title的流程

    vue-cli3配置favicon.ico和title的流程

    这篇文章主要介绍了vue-cli3配置favicon.ico和title的流程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 浅析一下Vue3的响应式原理

    浅析一下Vue3的响应式原理

    这篇文章主要通过示例和大家一起浅析一下Vue3的响应式原理,文中的示例代码讲解详细,对我们学习Vue3有一定帮助,需要的可以参考一下
    2022-08-08
  • Vue 开发必须知道的36个技巧(小结)

    Vue 开发必须知道的36个技巧(小结)

    这篇文章主要介绍了Vue 开发必须知道的36个技巧(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Vuejs2 + Webpack框架里,模拟下载的实例讲解

    Vuejs2 + Webpack框架里,模拟下载的实例讲解

    今天小编就为大家分享一篇Vuejs2 + Webpack框架里,模拟下载的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vuex mutitons和actions初使用详解

    Vuex mutitons和actions初使用详解

    这篇文章主要介绍了Vuex mutitons和actions初使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Vue兼容ie9的问题全面解决方案

    Vue兼容ie9的问题全面解决方案

    这篇文章主要介绍了Vue兼容ie9的问题全面解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • vue中的加密方式总结

    vue中的加密方式总结

    这篇文章主要为大家详细介绍了vue中常见的加密方式实现,例如js-base64、crypto-js、jsencrypt、bcryptjs,文中的示例代码讲解详细,需要的小伙伴可以参考一下
    2023-11-11
  • 在Vue3中实现虚拟列表的方法示例

    在Vue3中实现虚拟列表的方法示例

    文章主要介绍在 Vue3 中实现虚拟列表的方法,包括原理和代码实现,原理是只渲染可视区域内的列表项,通过设置子数据项高度、计算可视区域、渲染可视区域、滚动监听、设置缓冲列表项等提升性能,感兴趣的小伙伴跟着小编一起来看看吧
    2025-01-01

最新评论