我想在vue中存储对象,它应该可用于整个实例而不是被动的。通常(有反应)我会使用'数据'像这样:
new Vue({
data: myObject
})
但实际上myObject并不需要改变,所以我认为让它变得反应很糟糕。有没有办法做到这一点?
答案 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