位置: IT常识 - 正文

简单易懂 关于nextTick()的理解(关于简单的绘画)

发布时间:2024-01-17
简单易懂 关于nextTick()的理解 前言

推荐整理分享简单易懂 关于nextTick()的理解(关于简单的绘画),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:关于简单的话,关于简单的故事,关于简单的画画图片,关于简单的故事,关于简单的手抄报图片,关于简单的绘画作品,关于简单的,关于简单的,内容如对您有帮助,希望把文章链接给更多的朋友!

学习Vue的过程中,大家肯定都使用过nextTick(),关于nextTick()的使用时机,大家肯定都知道,那么它的工作原理是怎样的呢,本文就简单说一下它的nextTick()的工作原理。

nextTick的使用时机

首先记住:nextTick所指定的回调会在浏览器更新DOM完毕之后再执行。

举个例子:

在我自己做的一个单页面应用中,我有一个需求,当从后端请求回数据后,马上就对页面进行更新。比如,我要点击操作里的删除操作,前端删除数据后就向后端发请求,后端删除数据后返回数据,如果我们想马上显示到页面上,应该怎么做呢?

可能好多人会像我第一次做那样,比如我这个页面是用 v-for 遍历data这个数据显示出来的,可能好多人就会直接把前端返回的数据直接重新赋值给data。但是这样是绝对不行的!这样只会导致数据其实是变了,但是视图是不会变的,因为vue更新dom是异步的,无法通过同步代码赋值后马上去更新页面。所以即使删除成功了页面也不会显示出来。即使显示删除成功,页面也不会更新。

如何更新

我们的需求是,请求回数据后马上更新页面,首先理解几个点。

1、vue更新Dom是异步更新。简单易懂 关于nextTick()的理解(关于简单的绘画)

如图官网的描述,解释一下这段话,直接看可能有些懵,前两句话,关于同步和异步,以及提到的"事件循环",这就要从JS的运行机制说起,戳我前往。第三句话,“如果同一个 watcher 被多次触发,只会被推入到队列中一次”,这是什么意思呢,也在我的文章中可找到,戳我前往。

2、理解执行时机

读完上面两篇文章,大家应该就知道宏任务和微任务了把,而nextTick内部就是调用宏任务和微任务来完成事件调用的机制,让nextTick里的回调在一个事件循环的最后执行。为什么要在最后呢?在最后即意味着在所有异步任务之后,记得上一点吗,“vue更新Dom是异步更新”,而我们又把nextTick里的回调放在了所有异步任务的最后,这样就解释了最开始那句话,nextTick所指定的回调会在浏览器更新DOM完毕之后再执行。

3、回到例子实现需求

我们想要实现需求,本例我们采用热更新,即只更新局部组件。

我直接把我的子组件全放在router-view里的,通过变化v-if来实现组件更新。

看到这里可能有人会问,这不就是先把v-if设为false,再设置为true来实现吗,要不要nextTick都一样,那么这样想就大错特错了。

还记得刚才说的“如果同一个 watcher 被多次触发,只会被推入到队列中一次”,那篇文章已经解释过了,vue会把所有代码都执行了再去渲染页面,所以我们这两条this.$isRouterAlive = false 和 this.$isRouterAlive = true,相当于只执行了最后一条等于true,false都没执行过,所以相当于还是什么都没做,原始是true,现在还是true。

加了个nextTick就不一样了,这段代码就相当于告诉vue,vue你先帮我执行 this.$isRouterAlive = false,先不要管我nextTick里的东西,你去渲染完了最后再来执行我nextTick里的代码。

这样一说大家是不是就比较明白了,this.$isRouterAlive = true 是在页面渲染过后 再执行的,所以我们肉眼看其实已删除货物,页面马上就更新了,其实其中经过了先把router-view里的子组件取消掉,即v-if = false,然后再让 v-if = true,那么v-if大家都知道就是创建,相当于router-view里的内容被重新创建了,所以此时的数据也是最新的。

本文链接地址:https://www.jiuchutong.com/zhishi/300024.html 转载请保留说明!

上一篇:CSS 实现文字渐变色(css字体设置渐变色)

下一篇:前端面试:浅拷贝和深拷贝的区别?(前端常见面试)

  • 手机cpu排行(手机cpu排行榜天梯图)

    手机cpu排行(手机cpu排行榜天梯图)

  • 苹果海拔测量仪在哪里(苹果海拔测量仪在哪里15.4)

    苹果海拔测量仪在哪里(苹果海拔测量仪在哪里15.4)

  • 快手与快手极速版的区别(快手与快手极速版账号通用不)

    快手与快手极速版的区别(快手与快手极速版账号通用不)

  • 健康码一个手机号怎么申请2个(健康码一个手机是绿的一个手机是黄码是怎么回事)

    健康码一个手机号怎么申请2个(健康码一个手机是绿的一个手机是黄码是怎么回事)

  • OPPO手机录制截屏怎么设置(oppo手机怎么截屏录制视频)

    OPPO手机录制截屏怎么设置(oppo手机怎么截屏录制视频)

  • 苹果11复制不了文字吗(苹果11pro max复制粘贴不了)

    苹果11复制不了文字吗(苹果11pro max复制粘贴不了)

  • 淘宝带hot什么意思

    淘宝带hot什么意思

  • 电容nf和uf的意思(电容nf mf)

    电容nf和uf的意思(电容nf mf)

  • 快手确认收货后还能申请退款吗(快手确认收货后运费险还生效吗)

    快手确认收货后还能申请退款吗(快手确认收货后运费险还生效吗)

  • 网易账号修复要多久(网易账号修复要提供什么)

    网易账号修复要多久(网易账号修复要提供什么)

  • 手机相册停止访问了是什么情况(手机相册停止运行)

    手机相册停止访问了是什么情况(手机相册停止运行)

  • 账号异常一般多久恢复(帐号异常)

    账号异常一般多久恢复(帐号异常)

  • 强光手电电池型号(强光手电电池型号一样容量不一样通用吗)

    强光手电电池型号(强光手电电池型号一样容量不一样通用吗)

  • h61支持1600内存条吗(h61主板支持1600内存频率吗)

    h61支持1600内存条吗(h61主板支持1600内存频率吗)

  • 腾讯视频登录不显示二维码(腾讯视频登录不了别人的会员)

    腾讯视频登录不显示二维码(腾讯视频登录不了别人的会员)

  • 怎样发帖子到网上新闻(怎样把帖子发到网上去)

    怎样发帖子到网上新闻(怎样把帖子发到网上去)

  • 手机淘宝回收站在哪里(手机淘宝回收站在哪)

    手机淘宝回收站在哪里(手机淘宝回收站在哪)

  • 华为手机强制恢复出厂设置(华为手机强制恢复出厂设置后激活)

    华为手机强制恢复出厂设置(华为手机强制恢复出厂设置后激活)

  • 荣耀20i怎么手势分屏(荣耀20i怎么手势解锁)

    荣耀20i怎么手势分屏(荣耀20i怎么手势解锁)

  • 陌陌关注多久才能视频(陌陌关注多久才能语音通话什么情况)

    陌陌关注多久才能视频(陌陌关注多久才能语音通话什么情况)

  • 火山怎么用自己的音乐(火山怎么给火力)

    火山怎么用自己的音乐(火山怎么给火力)

  •  字体怎么加粗(字体怎么加粗加黑)

    字体怎么加粗(字体怎么加粗加黑)

  • 安卓q是什么系统(安卓q版本是什么意思)

    安卓q是什么系统(安卓q版本是什么意思)

  • 显示器有必要买4k高分辨率吗?高分辨显示器值得(显示器有必要买240hz吗)

    显示器有必要买4k高分辨率吗?高分辨显示器值得(显示器有必要买240hz吗)

  • vite项目优化(项目优化管理工具)

    vite项目优化(项目优化管理工具)

  • 爬虫基本原理(爬虫基本原理有哪些)

    爬虫基本原理(爬虫基本原理有哪些)

  • iframe标签的使用(iframe标签表示的框架)

    iframe标签的使用(iframe标签表示的框架)

  • 含税金额与不含税金额的换算
  • 土地税和房产税缴纳时间
  • 库存现金的使用范围
  • 软件工程质保金
  • 支付境外培训费
  • 资产处置收益计入营业收入吗
  • 事业单位预收账款属于什么科目
  • 应收票据主要包括
  • 对公账户的理财收入计入什么科目
  • 个税中的年金是什么意思
  • 周转材料计入什么账
  • 认缴制下实缴资本流程
  • 未开票收入如何申报增值税,下个月怎么操作
  • 暂估的成本跨年了怎么冲销后要调整报表吗
  • 建筑业红字发票备注
  • 开错的红字发票申请单上传了怎么撤销?
  • 差额征税进项如何抵扣
  • 外籍人士享受满五唯一吗
  • 消费税有哪几种纳税方式
  • 转让无形资产所有权计入什么科目
  • 事业收入和经营收入的联系
  • 公司还款给法人需要缴税吗
  • 软件企业即征即退账务处理
  • 进项发票抵扣范围
  • 非企业性单位包括哪些单位
  • 亏损企业季度盈利企业所得税怎么预缴?
  • 不动产租金收入缴纳增值税
  • php 递归函数
  • 个人独资企业公账转私账
  • 福利费发票已认证怎么查
  • 汽车维修的发票的购买方
  • 公益慈善事业捐赠个人所得税
  • gst插件
  • 外商独资企业在中国上市简称什么
  • laravel框架关键技术解析
  • 生产企业一般贸易
  • 小公司不交社保违法吗
  • 逾期增值税扣税凭证抵扣管理办法
  • discuz论坛安装步骤
  • 确认收入与结转成本会计分录怎么写
  • 商户待清算账户是什么
  • wordpress换域名后主题乱了
  • mongodb分页查询count太慢
  • 劳务派遣合法吗
  • 小规模纳税人企业所得税优惠政策最新2023
  • java怎么用mysql
  • 异地预缴税金
  • 跨月的增值税普通发票能作废吗
  • 企业会计人员审计程序
  • 以前年度损益调整科目编码是多少
  • 普通发票可以扣除吗
  • 先收款后给发票合法吗
  • 小规模主营业务成本是否含税
  • 经营范围之外的业务
  • 总公司可以给子公司开票吗
  • 融资租赁固定资产的账务处理实例
  • 营销活动开什么发票
  • 房屋租赁费交什么税
  • 培训机构账务处理
  • 员工提前预支工资合法吗
  • 不含税价格怎么算公式(1+3%)
  • sqlserverssms
  • mac系统怎么样
  • 获取mac命令
  • linux命令放在哪个路径
  • linux系统的文件怎么导出来
  • linux怎么禁用命令
  • gitlab离线安装 linux
  • vmware虚拟机Linux扩展硬盘
  • magento开发教程
  • CCMoveBy与CCMoveTo
  • win7系统设置wifi热点
  • python中数字运算
  • 安卓handler使用
  • unity导出ios项目到iphone
  • js自定义鼠标右键菜单
  • jquery easy ui
  • js获取浏览器的cookie
  • 苏州税务ukey客服电话
  • 湖南社保费申报测算管理系统登录不了
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号