实例

时间:2017-09-12 05:10:15

标签: javascript vuejs2 reactive-programming vuex

我想在vue中存储对象,它应该可用于整个实例而不是被动的。通常(有反应)我会使用'数据'像这样:

new Vue({
  data: myObject
})

但实际上myObject并不需要改变,所以我认为让它变得反应很糟糕。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用Vue Instance Properties。

  

您可能希望在许多组件中使用数据/实用程序,但您不希望污染全局范围。在这些情况下,您可以通过在原型上定义它们来使它们可用于每个Vue实例:

Vue.prototype.$appName = 'My App'

现在$ appName在所有Vue实例上都可用,甚至在创建之前。如果我们运行:

new Vue({
  beforeCreate: function () {
    console.log(this.$appName)
  }
})

参考:Link

您可以将Vuex状态用于该数据属性,并仅在您想要更改值时定义突变。

答案 1 :(得分:1)

如果您已经在使用Vuex,只需将数据设置为商店的状态,并且不提供任何突变以使其保持只读状态。

例如......

const store = new Vuex.Store({
  state: myObject
})

// assuming you've added Vue.use(Vuex) if using a module system
new Vue({
  // el, data, etc
  store
})

然后您的Vue实例或组件可以访问

this.$store.state.somePropertyOfMyObject