工作238:Vue.js中this.$nextTick()的使用

this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。

假设我们更改了某个dom元素内部的文本,而这时候我们想直接打印出这个被改变后的文本是需要dom更新之后才会实现的,也就好比我们将打印输出的代码放在setTimeout(fn, 0)中;

先来第一个例子看一看

<template><section><div ref="hello"><h1>Hello World ~</h1></div><el-button type="danger" @click="get">点击</el-button></section>
</template>
<script>export default {methods: {get() {}},mounted() {console.log(333);console.log(this.$refs['hello']);this.$nextTick(() => {console.log(444);console.log(this.$refs['hello']);});},created() {console.log(111);console.log(this.$refs['hello']);this.$nextTick(() => {console.log(222);console.log(this.$refs['hello']);});}}
</script>

可以根据打印的顺序看到,在created()钩子函数执行的时候DOM 其实并未进行任何渲染,而此时进行DOM操作并无作用,而在created()里使用this.$nextTick()可以等待dom生成以后再来获取dom对象

然后来看第二个例子

<template><section><h1 ref="hello">{{ value }}</h1><el-button type="danger" @click="get">点击</el-button></section>
</template>
<script>export default {data() {return {value: 'Hello World ~'};},methods: {get() {this.value = '你好啊';console.log(this.$refs['hello'].innerText);this.$nextTick(() => {console.log(this.$refs['hello'].innerText);});}},mounted() {},created() {}}
</script>

根据上面的例子可以看出,在方法里直接打印的话, 由于dom元素还没有更新, 因此打印出来的还是未改变之前的值,而通过this.$nextTick()获取到的值为dom更新之后的值

this.$nextTick()在页面交互,尤其是从后台获取数据后重新生成dom对象之后的操作有很大的优势

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拉勾网大数据相关岗位数据爬虫分析

拉勾网大数据相关招聘数据分析 观察对象&#xff1a;大数据相关岗位的招聘数据 观察时间&#xff1a;2016.3.28 数据来源&#xff1a;拉勾网 1、分析目的 眼下&#xff0c;大数据是一个非常热门的话题。受到非常多人的关注和追捧。其创造的相关职业也受到大家的青睐。但大数据相…

3、Finished with error: FormatException: Bad UTF-8 encoding 0xc3 (at offset 169)

这是由于 app 的版本为 release 找不到 keystore 文件&#xff0c; 我们只需要在 app 下的 build.gradle 文件中修改为 signingConfigs.debug 即可&#xff1a; buildTypes {release {signingConfig signingConfigs.debugproguardFiles getDefaultProguardFile(proguard-androi…

plsql 弹出 register,plsql注册码

注册码&#xff1a; Product Code&#xff1a;4t46t6vydkvsxekkvf3fjnpzy5wbuhphqz serial Number&#xff1a;601769 password&#xff1a;xs374ca https://blog.csdn.net/ma141982/article/details/76154919/

2018--20179215--《文献管理与信息分析》第三讲 英文数据库资源的发展趋势和利用...

《文献管理与信息分析》第三讲 英文数据库资源的发展趋势和利用 一、科研相关的文献资源有以下十大来源&#xff1a; 专利、会议论文、期刊、学位论文、科技报告、科技档案、产品资料、政府出版物、标准文献、图书。 二、数据库的使用 1.不同搜索引擎的差异&#xff1a; 覆盖的…

工作239:内容过长省略号失败 直接改的样式表

给元素加入以下样式&#xff1a; white-space:nowrap;overflow:hidden; text-overflow:ellipsis; 此外&#xff0c;还要注意给元素加上宽度&#xff1a; width:100px;

4、Flutter 采坑记录篇二_依赖库不兼容

1、报错信息 Because every version of flutter_test from sdk depends on package_resolver 1.0.4 which depends on http ^0.11.0, every version of flutter_test from sdk requires http ^0.11.0.And because cached_network_image >0.5.0 depends on flutter_cache_man…

Android身份证识别demo,文字识别

百度云链接&#xff1a;https://console.bce.baidu.com/?fromai1#/aip/overview 1、1首先去百度文字识别创建应用&#xff0c;获取ak和sk 配置ak和sk 1、2 jniLibs文件夹复制过去 2、识别身份证信息方法&#xff1a; /**** 解析身份证图片** param idCardSide 身份证正反面*…

jq消除网页滚动条

网页有些时候需要能滚动的效果&#xff0c;但是不想要滚动条&#xff0c;我就遇到了这样的需求。自己用jq写了一个垂直滚动条。 纯css也可以实现 .box::-webkit-scrollbar{display:none} 但是edge和Firefox不兼容&#xff0c;自己想了一下只要监听滚轮事件&#xff0c;用jq写应…

5、Flutter 实现 ViewPager、bottomNavigationBar 界面切换

1、前言 首先我们想一下&#xff0c;如果在 Android 中实现 布局切换&#xff0c;通常的思路是&#xff1a; 做一个 viewpager一组 Fragment每个 Fragment 绑定一个 xml最后填充至 viewpager2、Flutter 实现 上边提到的用安卓原生做&#xff0c;思路是很明确&#xff0c;但是代…

Android 应用内实现导航页面,接入百度SDK内置导航,高德SDK内置导航

1、首先到百度地图开放平台创建应用&#xff0c;获取应用AK http://lbsyun.baidu.com/apiconsole/key 2、到百度语言平台创建应用&#xff0c;获取Secret Key和语言APP ID http://yuyin.baidu.com/app 3、到百度地图开放平台下载Android 导航SDK https://pan.baidu.com/s/1z…

Python高级用法总结

Python很棒&#xff0c;它有很多高级用法值得细细思索&#xff0c;学习使用。本文将根据日常使用&#xff0c;总结介绍Python的一组高级特性&#xff0c;包括&#xff1a;列表推导式、迭代器和生成器、装饰器。 列表推导&#xff08;list comprehensions&#xff09; 场景1&…

工作241:判断数组里面是否有某个值

<el-form class"left-right"><el-form-item label"分发账号名称" label-width"100px"><el-select v-model"form.index" placeholder"选择绑定的分发账号"><el-option :disabled"item.status||Ro…

6、Flutter Error waiting for a debug connection: ProcessException: adb did not report f(转)

1、错误信息 Error waiting for a debug connection: ProcessException: adb did not report forwarded port 2、解决方法 升级adb&#xff0c;其实是更新SDK Platform-Tools就可以了。 步骤&#xff1a;打开 Android SDK >>> SDK Tools 勾选 Android SDK Flatform-…

特征选择的3种方法

当数据维数比较大时&#xff0c;就需要进行降维&#xff0c;特征选择是降维的一种主要方式&#xff0c;又包括3种方法&#xff1a;Filter、Wrapper和Enbedding。 1. Filter 过滤器方法&#xff0c;这种方法首先选定特征&#xff0c;再来进行学习。根据每一个属性的一些指标&…

前端学习(2710):重读vue电商网站30之左侧菜单栏图标设计

我们想要的效果如下&#xff1a; 如何设计&#xff1f; 首先&#xff0c;我们可以在 data 中定义一个对象&#xff0c;对应于每一个菜单选项的 id 然后通过 for 循环遍历每一个菜单选项的 id即可。

Android运行时异常 couldn't find xx.so

Android 关于导入module&#xff0c;运行时错误 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.txjifei.mapclient.liteapp-fp0FTs4C57uV3aLogQRvYA/base.apk"],nativeLibraryDirectories[/data/app/com.txj…

restful api

1、前言 前几天 Daniel 给我们的分享中&#xff0c;提到了 restful api&#xff0c;然后回去重新翻了一遍笔记&#xff0c;今天整理出来吧。 2、是什么 如果你没接触过 restful&#xff0c; 千万不要把它当成一门技术&#xff0c;他是一种请求风格&#xff0c;接下来看个例子&a…

Django在form提交CSRF验证失败. 相应中断问题

CSRF验证失败. 相应中断. 1&#xff09;.首先&#xff0c;我们可以先看一下出现问题的所在的原因。 Your browser is accepting cookies.The view function passes a request to the templates render method.In the template, there is a {% csrf_token %} template tag insid…

4、jeecg 笔记之 自定义显示按钮 (exp 属性)

1、需求 先看一下需求吧&#xff0c;我们希望 datagrid 操作栏中的按钮&#xff0c;可以根据条件进行动态显示。 2、实现 其实 jeecg 提供了一个属性 - exp &#xff0c;通过该属性即可实现。 <t:dgFunOpt funname"startInspect(id,mcaPhone)" exp"mcaStatus…