Vuejs2更新Vue.prototype全局对象
我在main.js中创建了一个全局对象,用于在控制器之间的整个应用程序中访问登录用户的数据 main.js 现在,上面的.user对象将在具有此.user的其他组件中可用 我要找的是,如果我在任何组件中对此进行了更改。用户,这些更改也会反映到其他组件中,但现在不会发生这种情况 我有两个组件,一个用于更新此.user EditProfileComponent.vue中的数据 在提交上述表单时,我正在将数据保存到数据库中,并在刷新时使用getUser将其返回 我所期望的是,当我在表单中对v-model进行更改时,它应该将更改直接显示到UserCardComponent.vue当您设置vue.prototype.user的值时,vue不希望该值绑定到DOM,因此它不会是被动的。您可能见过全局服务以类似Vue.prototype.$http或类似的方式设置,但这些对象并没有直接绑定到DOM 维护反应式全局可访问对象最直接的方法是使用 您可以创建存储以包含用户对象: 并通过将存储对象传递给根Vue实例来注册存储:Vuejs2更新Vue.prototype全局对象,vuejs2,global,vue-component,Vuejs2,Global,Vue Component,我在main.js中创建了一个全局对象,用于在控制器之间的整个应用程序中访问登录用户的数据 main.js 现在,上面的.user对象将在具有此.user的其他组件中可用 我要找的是,如果我在任何组件中对此进行了更改。用户,这些更改也会反映到其他组件中,但现在不会发生这种情况 我有两个组件,一个用于更新此.user EditProfileComponent.vue中的数据 在提交上述表单时,我正在将数据保存到数据库中,并在刷新时使用getUser将其返回 我所期望的是,当我在表单中对v-mode
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'])