Vuex如何确定吸气剂中使用的哪些数据会导致重新激活?

问题描述 投票:0回答:1

Vuex如何确定属性何时影响吸气剂反应性以及何时将其丢弃? Vue native的计算属性是否相同?

是不是对每个值的任何引用都会传递到任何获取器/计算器中,然后才影响该属性的反应性?如果我只是在计算/获取函数主体中包含对属性的引用,而不以任何方式修改或使用其数据,那么当我更新“未使用”的变量时,该计算后的值是否会重新评估?

例如:

computed: {
    contrivedExample(){
        var unused = this.$data.something
        return this.$data.otherthings.filter( element => element.id == 2 )
    }
}

如果我继续修改this.$data.something,会不会导致计算结果重新评估?在某些情况下会/不会吗?

我想解决一个更深层的问题,但这是它的根本。

vuejs2 vuex getter vuex-modules
1个回答
0
投票

是的,Vuex使用与Vue相同的常规反应过程。 Vue docs中解释了其中的多少:

[当您将纯JavaScript对象作为数据选项传递给Vue实例时,Vue将遍历其所有属性,并使用Object.defineProperty将它们转换为getter / setter方法。

getter / setter对用户是不可见的,但是在后台,它们使Vue在访问或修改属性时能够执行依赖项跟踪和更改通知。

每个组件实例都有一个相应的观察者实例,该实例将在组件渲染期间“触摸”的所有属性记录为依赖项。稍后,当触发依赖项的设置器时,它会通知观察者,这又导致组件重新呈现。

  • 计算出的每个反应性参考都会影响其反应性。

  • 即使没有包含已更改的反应数据,也不会计算是否未在某处使用它。您可以使用控制台通过实验来证明这一点。

  • 另一方面,如果在某处使用它,则其反应性含量的任何变化都将导致其重新计算。

  • “在某处使用”表示只要在某处使用that,就可以在模板中或任何其他反应性过程(如方法或另一个计算的过程等)中。

  • 因此,在您的示例中,是否对所计算的重新评估取决于实际使用的答案。如果是,则为是(因为它包含反应性数据)。如果不使用,则不会。

  • 这是一个非常基本的demo

© www.soinside.com 2019 - 2024. All rights reserved.