相关文章推荐
耍酷的书签  ·  2021国内外最好看的电影大片电视剧推荐(超 ...·  2 年前    · 
粗眉毛的桔子  ·  全新皓影e:PHEV能否赢得更多青睐-手机新浪汽车·  2 年前    · 
腼腆的遥控器  ·  【北京嘉际PHEV最新报价】嘉际PHEV多少 ...·  3 年前    · 
爽快的充电器  ·  【文章】江淮钇为,别瞎以为_车家号_汽车之家·  3 年前    · 
欢乐的消防车  ·  国羽出征东京奥会14人名单确定 ...·  3 年前    · 
Code  ›  vue小技巧—nextTick开发者社区
vue nexttick
https://cloud.tencent.com/developer/article/1819771
玩篮球的刺猬
3 年前
作者头像
前端逗逗飞
0 篇文章

vue小技巧—nextTick

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 前端逗逗飞 > vue小技巧—nextTick

vue小技巧—nextTick

作者头像
前端逗逗飞
发布 于 2021-04-30 10:34:40
391 0
发布 于 2021-04-30 10:34:40
举报

nextTick

在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。

使用方法

this.$nextTick(function(){// 更新了dom})
vue2.1.0后返回了Promise对象,所以可以使用.then()或者结合async await语法糖使用
复制代码

使用场景

在弹出对话框的同时通过ref获取内嵌表格的实例。需等待此次DOM更新完毕,表格组件被挂载到父组件上才能正确获取。这时候就需要结合this.$nextTick使用。

async onOpenDialog() {
      this.model.visible = true
      // undefined
      console.log(this.$refs.form)
      setTimeout(function() {
      // window
        console.log(this)
      }, 100)
      this.$nextTick(function() {
        // parent vm 有疑惑吗?
        console.log(this)
        // form vm
        console.log(this.$refs.form)
      await this.$nextTick()
      // form vm
      console.log(this.$refs.form)
      this.$nextTick().then((vm)=>{
      // parent vm
      console.log(vm)
      // form vm
      	console.log(this.$refs.form)
复制代码

源码解析

function nextTick (cb, ctx) {
    var _resolve;
      // 放入回调函数,等待DOM重新渲染完毕后执行
    callbacks.push(function () {
      if (cb) {
        try {
          // 修改执行上下文,指向当前页面实例
          // 所以在我们没有使用箭头函数的前提下,this指向仍然正确
          cb.call(ctx);
        } catch (e) {
          handleError(e, ctx, 'nextTick');
      } else if (_resolve) {
        _resolve(ctx);
    if (!pending) {
      pending = true;
      timerFunc();
    // $flow-disable-line
    if (!cb && typeof Promise !== 'undefined') {
      return new Promise(function (resolve) {
        _resolve = resolve;
 
推荐文章
耍酷的书签  ·  2021国内外最好看的电影大片电视剧推荐(超高分) - 知乎
2 年前
粗眉毛的桔子  ·  全新皓影e:PHEV能否赢得更多青睐-手机新浪汽车
2 年前
腼腆的遥控器  ·  【北京嘉际PHEV最新报价】嘉际PHEV多少钱-优惠价及图片-爱卡汽车
3 年前
爽快的充电器  ·  【文章】江淮钇为,别瞎以为_车家号_汽车之家
3 年前
欢乐的消防车  ·  国羽出征东京奥会14人名单确定 仅谌龙具备奥运经验_腾讯新闻
3 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号