Vuejs2更新Vue.prototype全局对象

Vuejs2更新Vue.prototype全局对象,vuejs2,global,vue-component,Vuejs2,Global,Vue Component,我在main.js中创建了一个全局对象,用于在控制器之间的整个应用程序中访问登录用户的数据 main.js 现在,上面的.user对象将在具有此.user的其他组件中可用 我要找的是,如果我在任何组件中对此进行了更改。用户,这些更改也会反映到其他组件中,但现在不会发生这种情况 我有两个组件,一个用于更新此.user EditProfileComponent.vue中的数据 在提交上述表单时,我正在将数据保存到数据库中,并在刷新时使用getUser将其返回 我所期望的是,当我在表单中对v-mode

我在main.js中创建了一个全局对象,用于在控制器之间的整个应用程序中访问登录用户的数据

main.js

现在,上面的.user对象将在具有此.user的其他组件中可用

我要找的是,如果我在任何组件中对此进行了更改。用户,这些更改也会反映到其他组件中,但现在不会发生这种情况

我有两个组件,一个用于更新此.user EditProfileComponent.vue中的数据

在提交上述表单时,我正在将数据保存到数据库中,并在刷新时使用getUser将其返回

我所期望的是,当我在表单中对v-model进行更改时,它应该将更改直接显示到UserCardComponent.vue

当您设置vue.prototype.user的值时,vue不希望该值绑定到DOM,因此它不会是被动的。您可能见过全局服务以类似Vue.prototype.$http或类似的方式设置,但这些对象并没有直接绑定到DOM

维护反应式全局可访问对象最直接的方法是使用

您可以创建存储以包含用户对象:

并通过将存储对象传递给根Vue实例来注册存储:

new Vue({
  el: '#app',
  store
})
然后,在需要访问用户对象的任何组件中,都可以通过Vuex.mapState帮助函数定义计算用户属性:

computed: Vuex.mapState(['user'])
下面是一个简单的例子:

函数getUser{ 返回{ 名字:“约翰”, 姓:“Doe” } } const store=新的Vuex.store{ 状态:{user:getUser}, } Vue.组件“用户卡”{ 模板:`{user.firstName}}{{user.lastName}}`, 计算:Vuex.mapState['user'] } 新Vue{ el:“应用程序”, 百货商店 计算:Vuex.mapState['user'] } 设置Vue.prototype.user的值时,Vue不希望该值绑定到DOM,因此它不会是被动的。您可能见过全局服务以类似Vue.prototype.$http或类似的方式设置,但这些对象并没有直接绑定到DOM

维护反应式全局可访问对象最直接的方法是使用

您可以创建存储以包含用户对象:

并通过将存储对象传递给根Vue实例来注册存储:

new Vue({
  el: '#app',
  store
})
然后,在需要访问用户对象的任何组件中,都可以通过Vuex.mapState帮助函数定义计算用户属性:

computed: Vuex.mapState(['user'])
下面是一个简单的例子:

函数getUser{ 返回{ 名字:“约翰”, 姓:“Doe” } } const store=新的Vuex.store{ 状态:{user:getUser}, } Vue.组件“用户卡”{ 模板:`{user.firstName}}{{user.lastName}}`, 计算:Vuex.mapState['user'] } 新Vue{ el:“应用程序”, 百货商店 计算:Vuex.mapState['user'] } Globale OBJ>>Vue.prototype.OBJ 反应性OBJ>>Vue.observateOBJ 假设getUser返回一个对象>> Vue.prototype.user=Vue.observable getUser Globale OBJ>>Vue.prototype.OBJ 反应性OBJ>>Vue.observateOBJ 假设getUser返回一个对象>> Vue.prototype.user=Vue.observable getUser
您能否澄清为什么得出结论,解决方案是将getUser调用封装在Vue.observable中?请不要只发布代码作为答案,而是说明代码的作用,以及它如何解决问题。带有解释的答案通常质量更高,更有可能吸引更多的投票。要使vue使对象可用于所有组件,我们必须使其成为全局对象,因此我们使用vue.prototype实现此目的,使其对组件更改作出反应,我们必须将其设置为可观察,您能否澄清为什么得出结论,解决方案是将getUser调用封装在Vue.observable中?请不要只发布代码作为答案,而是说明代码的作用,以及它如何解决问题。带有解释的答案通常质量更高,更有可能吸引更多的投票。要使vue使对象可用于所有组件,我们必须使其成为全局对象,因此我们使用vue.prototype实现此目的,使其对组件更改作出反应,我们必须将其设置为可观察,
new Vue({
  el: '#app',
  store
})
computed: Vuex.mapState(['user'])