尹小侠 2022-03-08 11:52 采纳率: 100%
浏览 142
已结题

vue中 nextTick与watch的区别是什么?

题目如题,今天面试被问到的一个问题,找了半天度娘也没解决。有没有哪位知道的?

  • 写回答

6条回答 默认 最新

  • 归来巨星 前端领域新星创作者 2022-03-08 13:57
    关注

    这样去说

    nextTick:是一个回调函数,可以理解成 当响应式数据变更完成之后 -> 渲染完成dom之后,执行的一个回调函数(可以简单去理解一下 js的 eventLoop 事件循环机制,有一定的关联) 但是你在父组件使用的nextTick只相对于你当前的层级,你不能去控制一个异步渲染的子组件层级,他不一定会比你的异步渲染更晚执行,根据nextTick源码来看,一共是用了4种方式做了延迟操作(Promise、MutationObserver、setImmediate、setTimeout) 主要的就是用来做一个延迟操作的 用于抓取一个更新时机 最简单的 Promise、setTimeout 一个是微任务一个是宏任务,用于同异步机制实现一个延迟效果,另外两种就是dom更新钩子。

    watch:有兴趣可以从b站看一下源码2.+版本用的就是Object.defineproperty()做的监听操作,而 watch 你可以简单的理解为这个监听函数的回调,我可以在这个 Object.defineproperty 监听的对象被监听的时候 做一些操作。

    本质上来说两者差别还是很大的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 有关类的报错,在模块里调用另一个模块的方法下的变量时出错
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格
  • ¥15 kali linux用wget archive.kali.org/archive-key.asc指令下载签名无效(失败)
  • ¥15 openHarmony 利用c++程序在dayu210开发板上实现拉取RTSP视频流并且在屏幕上显示
  • ¥15 GD32H757的can通信配置
  • ¥20 nist随机数测试的问题
  • ¥20 帮我解决这个项目,thank you各位程序员
  • ¥15 哪位能用ea软件做一下,有偿