vue的computed是什么时候执行的

fiy 其他 46

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    vue的computed是在以下情况下执行的:

    1. 初始执行:当组件创建时,computed属性会立即执行一次,将结果缓存起来。

    2. 依赖改变时执行:computed属性会自动追踪它所依赖的数据(响应式依赖),当依赖的数据发生变化时,computed属性会重新计算。

    3. 手动触发执行:除了自动追踪依赖的数据变化,我们也可以在需要的时候手动触发computed属性的执行,通过调用该属性的方法来实现。

    需要注意的是,computed属性会做缓存处理,只有当依赖的数据发生变化时,computed属性才会重新计算。这样可以避免不必要的计算,提高性能。同时,computed属性的结果是响应式的,当依赖的数据发生变化时,依赖computed属性的地方也会相应地更新。

    综上所述,computed属性在组件创建时会立即执行一次,在依赖改变时自动执行,并且可以手动触发执行。它能够方便地根据依赖的数据动态计算出属性的值,并且保持与数据的同步。正确使用computed属性可以简化组件的逻辑,提高代码的可读性和可维护性。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Vue中的computed属性是在以下情况下被执行的:

    1. 初始化阶段:在Vue实例被创建时,computed属性会立即被计算一次。这是为了确保初始状态的值是正确的,并且可以响应式地追踪依赖关系。

    2. 监听依赖属性发生变化时:computed属性会监视依赖的响应式属性,当这些属性发生变化时,computed属性会被重新计算。Vue使用了响应式系统来跟踪属性的变化,一旦依赖的属性发生了变化,computed属性就会被标记为“脏”,在下一次访问时重新计算。

    3. 手动调用:我们可以在Vue实例或组件的方法中手动调用computed属性,以获取其计算结果。当我们需要在特定的时机获取最新的计算结果时,可以主动调用computed属性。

    4. 依赖属性被watcher订阅时:computed属性本质上是一个特殊的getter函数,在被访问时,会创建一个与之关联的侦听器(watcher),该侦听器将依赖的响应式属性添加到其依赖列表中。一旦依赖属性发生变化,侦听器就会通知computed属性进行重新计算。

    5. 依赖属性发生变化被异步调度:Vue的响应式系统在处理依赖属性变化时是异步的,即依赖属性变化不会立即触发computed属性的重新计算。相反,Vue会将这些变化收集起来,并在下一个事件循环周期中进行批处理。这样做是为了减少计算的次数,提高性能。

    总之,computed属性在初始化阶段被计算一次,然后根据其依赖的属性的变化情况进行动态计算,并根据需要进行手动调用。这使得computed属性能够自动缓存计算结果,当依赖属性没有发生变化时,不会重复计算,提高了性能和效率。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Vue的computed是在Vue实例中,通过声明式的方式定义计算属性的,它的执行时机是当该计算属性被访问时才会进行执行。Vue会根据计算属性的依赖关系进行缓存,并且只有在依赖的数据发生改变时才会重新计算。

    下面是computed的执行流程:

    1. 定义计算属性:在Vue实例中,通过computed属性定义计算属性。例如:
    new Vue({
      data: {
        name: 'John',
        age: 18
      },
      computed: {
        fullName: function() {
          return this.name + ' Doe';
        },
        adult: function() {
          return this.age >= 18;
        }
      }
    })
    
    1. 访问计算属性:当我们在模板中或者在Vue实例中访问计算属性时,computed的getter方法会被调用,返回计算属性的值。
    <div>
      <p>Full Name: {{ fullName }}</p>
      <p>Is Adult: {{ adult }}</p>
    </div>
    
    1. 依赖发生改变:当计算属性所依赖的数据发生改变时,Vue会触发重新计算,并更新计算属性的值。例如,当name或age发生改变时,fullName和adult会被重新计算。

    2. 缓存计算结果:computed的值会进行缓存,只有在它所依赖的数据发生改变时才会重新计算,否则会直接返回缓存的结果。这样可以避免不必要的计算,提高性能。

    需要注意的是,computed属性只有在模板中使用的时候才会进行计算,而在其他非模板的javascript代码中不会进行计算。如果我们需要在Vue实例的非模板代码中使用计算属性的值,应该使用Vue实例的属性访问器(this.fullName)来获取计算属性的值。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部