vue中computed顺序、watch顺序、响应次数使用

 更新时间:2024年08月07日 09:35:42   作者:秦时明月之安康  
这篇文章主要介绍了vue中computed顺序、watch顺序、响应次数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

先看代码

<template>
  <div class="hello">
    <button style="font-size: 40px;" @click="change">改变值</button>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  data() {
    console.log("data");
    return {
      a: 1,
      a2: 1
    };
  },
  watch: {
    a() {
      console.log("watch a");
    },
    b() {
      console.log("watch b");
    },
    c() {
      console.log("watch c");
    },
    a2() {
      console.log("watch a2");
    }
  },
  computed: {
    b() {
      console.log("computed b");
      return this.a + 1;
    },
    c() {
      console.log("computed c");
      return this.b + this.a;
    },
    d() {
      console.log("computed d");
      return this.a + 1;
    }
  },
  methods: {
    change() {
      console.log("-");
      this.a2 += 1;
      console.log("--");
      this.a += 1;
      console.log(this.c);
      console.log("---");
    }
  }
};
</script>

<style scoped lang="less"></style>

输出结果

页面渲染完成的输出

点击按钮的输出

跟你的预期一致么?如果不一致,为什么?

分析过程

  • vue是如何知道computed内的响应式变量发生了变化?答:第一次调用时收集依赖
  • a 是 data,b watch 了 a,c watch 了 a 和 b,问 a 变化时,c 执行多少次?答:1次
  • 同一个函数内修改了 data 的两个值,watch 中的调用顺序是否与修改 data 的值的顺序有关?答:无关,只与 watch 的定义顺序有关
  • 一个函数 f1 内修改 data 变量 a,执行完该函数前,watch a 的函数是否会在 f1 执行完毕之前执行?答:不会,会先缓存待执行的 watch 函数,之后再统一调用这些 watch 方法
  • 初始化加载页面时,computed 是否会执行?答:不会,调用时才会执行(观察 computed 的 d 从未执行过。而打印computed b,是因为 watch 了 b)。
  • 变量发生变化时,watch 先执行?还是 computed 先执行?答:computed(有的话)
  • computed 的打印顺序是否与定义顺序有关?答:无关,只与变化顺序有关
  • 若在 chrome DevTools 中 vue 插件查看此组件的数据,则会执行一次 computed d

  • 何时会执行 computed ?答:被调用时。分几种情况:被 template 调用时、被实际执行的代码调用时、被 watch 时
  • data 跑完才跑 watch

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue.js中Line第三方登录api的实现代码

    Vue.js中Line第三方登录api的实现代码

    这篇文章主要介绍了Vue.js中Line第三方登录api实现代码,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Vue.js递归组件构建树形菜单

    Vue.js递归组件构建树形菜单

    这篇文章主要介绍了用Vue.js递归组件构建一个可折叠的树形菜单的教学内容,有兴趣的朋友跟着学习下。
    2017-12-12
  • Vue Prop属性功能与用法实例详解

    Vue Prop属性功能与用法实例详解

    这篇文章主要介绍了Vue Prop属性功能与用法,结合实例形式较为详细的分析了vue.js中Prop属性的功能、原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-02-02
  • vue-devtools安装使用全过程

    vue-devtools安装使用全过程

    这篇文章主要介绍了vue-devtools安装使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Axios学习笔记之使用方法教程

    Axios学习笔记之使用方法教程

    axios是用来做数据交互的插件,最近正在学习axios,所以想着整理成笔记方便大家和自己参考学习,下面这篇文章主要跟大家介绍了关于Axios使用方法的相关资料,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Vue实现购物车场景下的应用

    Vue实现购物车场景下的应用

    这篇文章主要为大家详细介绍了Vue实现购物车场景下的应用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Vue 表情包输入组件的实现代码

    Vue 表情包输入组件的实现代码

    这篇文章主要介绍了Vue 表情包输入组件的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • vue指令以及dom操作详解

    vue指令以及dom操作详解

    本篇文章主要介绍了vue指令以及dom操作详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 解决Vue-Router升级导致的Uncaught (in promise)问题

    解决Vue-Router升级导致的Uncaught (in promise)问题

    这篇文章主要介绍了解决Vue-Router升级导致的Uncaught (in promise)问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue里面如何使用图片的懒加载

    vue里面如何使用图片的懒加载

    这篇文章主要介绍了vue里面如何使用图片的懒加载,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10

最新评论