javascript - Vue.js 如何在计算属性中设置观察者?

标签 javascript vue.js

如果我有一个如下所示的计算属性:

computed: {
  greeting() {
    const state = this.$store.state;
    if (state.name === 'Joe') {
      return 'Hey, Joe';
    } else {
      return 'Hello, ' + state.name;
    }
  }
}

Vue 将在哪些对象上设置观察者? this.$store.statestate.name 或两者兼而有之?询问原因:

  • 我想确保此 Vue 实例不会监听对 Vuex 存储的任何和所有更改 - 这似乎会降低大型应用程序的性能。
  • 我有一个业务需求,需要通过 props 设置一些计算属性,但我很难让它们使用react。
  • 我只是很好奇。

最佳答案

如果 this.$store.statethis.$store.state.name 属性是 react 性的(它们应该是),那么 Vue 将观察到以下变化:这些属性并在这些属性的值发生变化时重新评估 greeting

不会观察到其他属性。

这将导致重新评估greeting:

this.$store.state.name = 'foo';
this.$store.state = bar();

不会导致重新评估greeting:

this.$store.state.foo = 'foo';
this.$store.state.a.b.c = 'bar';
this.$store.apple = 'pink lady';

关于javascript - Vue.js 如何在计算属性中设置观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43508145/

相关文章:

vue.js - 如何让图像在 Vuetify 中工作?

javascript - 从后端加载数据时,I18Next 不起作用

javascript - 将 ionicTimePicker 舍入到最接近的 30 分钟间隔

javascript - 创建数组还是直接从数据库?

Javascript 模块设计

Vue.js 应用程序不在 Gitlab 页面上运行

vue.js - Dose 'parent template' 在 Vue 中意味着 'parent component '?

javascript - HTML固定大元素

Javascript HTML 如何在表单验证后运行函数

vue.js - v-model 触发更改事件两次