【发布时间】:2019-07-09 03:25:31
【问题描述】:
有User.js 类和用户对象(user = new User();)。
user 对象正在所有嵌套组件中使用。在User 类中有很多重要的方法。
如何在任何组件中简单地使用/访问this.user 或this.$user 及其方法?
1-solution(临时工作解决方案):在 vuex 的 store 中设置 user 并在所有组件的 data 中定义:
data(){
return {
user:this.$store.state.user
}
}
缺点:在每个组件中,都应该添加它。注意:组件太多了。
2-solution:将用户添加到 Vue 的 prototype 之类的插件:
Vue.prototype.$user = user
缺点:当user的数据发生变化时,它不会影响在DOM元素(UI)中。
3-solution:放入组件的props。
缺点:在每个组件中,都应该添加它。注意:还有这么多组件。
我发现的所有解决方案都有问题,尤其是随着项目越来越大。
任何建议和解决方案将不胜感激!
【问题讨论】:
-
github.com/vuejs/vue/issues/4029 这会很有帮助。阅读它
-
@CodeManiac 谢谢,我不知道 react 的类似上下文的功能。但我没有找到好的解决方案。
-
对于这种情况
dependency injection是最好的解决方案。 vuejs.org/v2/guide/… -
您的代码
this.user or this.$user也需要写入每个组件!没有不同 。但是您无需更改user数据,只需从商店直接访问 -
@imudin07 是的,这是因为注入的值是非反应性的。你需要改用这个 npm 包github.com/LinusBorg/vue-reactive-provide
标签: javascript vue.js vuex