广告
返回顶部
首页 > 资讯 > 精选 >Vue中nextTick的示例分析
  • 498
分享到

Vue中nextTick的示例分析

2023-06-14 20:06:32 498人浏览 独家记忆
摘要

这篇文章主要介绍了Vue中nextTick的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vue是什么Vue是一套用于构建用户界面的渐进式javascript框架,V

这篇文章主要介绍了Vue中nextTick的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

vue是什么

Vue是一套用于构建用户界面的渐进式javascript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。

当数据发生变化之后,DOM视图并不会立即更新,如果我们在发生变化之后立马去获取某个节点或者某个节点的值,很有可能结果就是undefined;因为Vue实现响应式并不是数据发生变化之后DOM立即变化,而是按一定的策略进行DOM的更新;

来看一个小demo:

App.vue

<template>  <div id="app">        <div ref="message">{{msg}}</div>        <div v-if="msg1">{{msg1}}</div>        <button @click="changeMsg">Change the Message</button>  </div></template><script>export default {  name: 'App',  data(){    return {      msg:"Hello Vue",      msg1: '',    }  },  methods:{    changeMsg(){      this.msg='hello world';      this.msg1=this.$refs.message.innerhtml;       console.log("更新DOM之前:"+this.msg1)    }  }}</script><style>#app {  font-family: 'Avenir', Helvetica, Arial, sans-serif;  -WEBkit-font-smoothing: antialiased;  -moz-osx-font-smoothing: grayscale;  text-align: center;  color: #2c3e50;  margin-top: 60px;}</style>

Vue中nextTick的示例分析

我们通过运行代码能够看到当我们不在this.$nextTick方法里面进行DOM操作的时候,this.$refs.message.innerHTML的值存储的还是之前的初始值;

修改代码:

App.vue

<template>  <div id="app">        <div ref="message">{{msg}}</div>        <div v-if="msg1">{{msg1}}</div>        <button @click="changeMsg">Change the Message</button>  </div></template><script>export default {  name: 'App',    data(){    return {      msg:"Hello Vue",      msg1: '',    }  },  methods:{    changeMsg(){      this.msg='hello world';      // this.msg1=this.$refs.message.innerHTML;      //  console.log("更新DOM之前:"+this.msg1)        this.$nextTick(()=>{          this.msg1=this.$refs.message.innerHTML;          console.log("更新DOM之后:"+this.msg1)        })    }  }}</script><style>#app {  font-family: 'Avenir', Helvetica, Arial, sans-serif;  -webkit-font-smoothing: antialiased;  -moz-osx-font-smoothing: grayscale;  text-align: center;  color: #2c3e50;  margin-top: 60px;}</style>

Vue中nextTick的示例分析

修改代码之后我们可以发现,使用this.$nextTick很容易的就接收到了更新后的值,正如官网解释:在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM;

再来修改代码对比一下:

App.vue

<template>  <div id="app">        <div ref="message">{{msg}}</div>        <div v-if="msg1">{{msg1}}</div>        <button @click="changeMsg">Change the Message</button>  </div></template><script>export default {  name: 'App',    data(){    return {      msg:"Hello Vue",      msg1: '',    }  },  methods:{    changeMsg(){      this.msg='hello world';      this.msg1=this.$refs.message.innerHTML;       console.log("更新DOM之前:"+this.msg1)        this.$nextTick(()=>{          this.msg1=this.$refs.message.innerHTML;          console.log("更新DOM之后:"+this.msg1)        })    }  }}</script><style>#app {  font-family: 'Avenir', Helvetica, Arial, sans-serif;  -webkit-font-smoothing: antialiased;  -moz-osx-font-smoothing: grayscale;  text-align: center;  color: #2c3e50;  margin-top: 60px;}</style>

Vue中nextTick的示例分析

经过修改代码,我们现在可以很容易看出来this.$nextTick(callback)的作用,callback是回调函数也就是我们要进行操作DOM的事情;

应用场景:

  • 在vue的生命周期钩子函数created()中进行DOM操作的时候一定要把DOM操作放入到this.$nextTick()中;

  • 因为在created钩子函数触发的时候,DOM是没有进行渲染的;DOM没有进行渲染,然后进行DOM操作无疑是徒劳的;

  • 所以我们在created中进行DOM操作的时候,一定要将DOM操作放入到this.$nextTick()中;

  • 与之相反的是mounted,因为当触发mounted的时候,DOM的挂载和渲染都已经完成了,所以在mounted中进行DOM操作是不会有任何问题的;

因为DOM更新是异步的,像v-if指令判断增删DOM元素,我们在方法中给变量赋值的时候,如果不使用this.$nextTick(),我们很有可能拿到的还是初始值,如果想拿到更新后的值,需要使用this.$nextTick()方法

感谢你能够认真阅读完这篇文章,希望小编分享的“Vue中nextTick的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Vue中nextTick的示例分析

本文链接: https://www.lsjlt.com/news/274716.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue中nextTick的示例分析
    这篇文章主要介绍了Vue中nextTick的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,V...
    99+
    2023-06-14
  • vue中vue-cli的示例分析
    这篇文章将为大家详细讲解有关vue中vue-cli的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。正文首先,我们来说一下安装的东西吧!处于有头有尾的目的,还是几句...
    99+
    2022-10-19
  • Vue中vuex的示例分析
    这篇文章主要介绍了Vue中vuex的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在 Vue.js 的项目中,如果项目结构简单, 父...
    99+
    2022-10-19
  • Vue中Toast的示例分析
    这篇文章将为大家详细讲解有关Vue中Toast的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、效果图二、说明这类提示框组件我们通常都会直接在 JS 代码中进行...
    99+
    2022-10-19
  • Vue中TodoList的示例分析
    小编给大家分享一下Vue中TodoList的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!<template>  <...
    99+
    2023-06-25
  • vue中.vue文件解析的示例分析
    这篇文章将为大家详细讲解有关vue中.vue文件解析的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue 提供了一个 compiler.parseCompone...
    99+
    2022-10-19
  • Vue.js中vue-resource的示例分析
    小编给大家分享一下Vue.js中vue-resource的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!vue-reso...
    99+
    2022-10-19
  • Vue中keep-alive的示例分析
    这篇文章主要为大家展示了“Vue中keep-alive的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中keep-alive的示例分析”这篇文章吧...
    99+
    2022-10-19
  • vue-cli中vuex的示例分析
    这篇文章主要为大家展示了“vue-cli中vuex的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue-cli中vuex的示例分析”这篇文章吧。1.v...
    99+
    2022-10-19
  • Vue中插件的示例分析
    这篇文章主要为大家展示了“Vue中插件的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue中插件的示例分析”这篇文章吧。以上是“Vue中插件的示例分析”这篇文章的所有内容,感谢各位的阅...
    99+
    2023-06-25
  • Vue中组件的示例分析
    这篇文章将为大家详细讲解有关Vue中组件的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。<body>    <div id=&q...
    99+
    2023-06-25
  • Vue中vue-cli安装的示例分析
    这篇文章给大家分享的是有关Vue中vue-cli安装的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。介绍Vue-cli是Vue的脚手架工具主要作用:目录结构、本地调试、代...
    99+
    2022-10-19
  • Vue+Webpack+Vue-loader的示例分析
    小编给大家分享一下Vue+Webpack+Vue-loader的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用预处理...
    99+
    2022-10-19
  • Vue中render开发的示例分析
    这篇文章给大家分享的是有关Vue中render开发的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。场景官网描述的场景当我们开始写一个通过 level prop 动态生成 ...
    99+
    2022-10-19
  • webstorm中vue语法的示例分析
    这篇文章给大家分享的是有关webstorm中vue语法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前提vue的官方文档上建议新手是先不要使用vue-cli,而是直接先...
    99+
    2022-10-19
  • vue中eslint配置的示例分析
    这篇文章将为大家详细讲解有关vue中eslint配置的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在前端开发过程中,难免习惯了 console.log...
    99+
    2022-10-19
  • Vue中location.search与location.hash的示例分析
    这篇文章给大家分享的是有关Vue中location.search与location.hash的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景用过Vue Router的...
    99+
    2022-10-19
  • vue中mounted调用的示例分析
    这篇文章主要为大家展示了“vue中mounted调用的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中mounted调用的示例分析”这篇文章吧。在...
    99+
    2022-10-19
  • vue中虚拟DOM的示例分析
    这篇文章主要介绍了vue中虚拟DOM的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。虚拟 DOM 优点:保证性能下限:&n...
    99+
    2022-10-19
  • Vue中Mixin混入的示例分析
    这篇文章给大家分享的是有关Vue中Mixin混入的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 什么是Mixin?想要使用一个事物或者工具,我们首要先了解它是什么,这样我们才好对症下药。其实Mixi...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作