我想在所有组件之间共享简单数据 我知道可以使用 Vuex 或全局变量作为状态来完成,但这对我的项目来说太过分了!
代码如下:
Vue.mixin({
data: function () {
return {
base_url: 'http://test.develop/api/v1/',
isLoading : false
}
}
})
base_url
是常量并且可以工作,但是 isLoading
必须是 react 性的并且不起作用,当我在一个组件中更改它并将其记录在另一个组件中时,它保持不变.
现在我的问题是 vue mixins 中应该使用什么样的数据? mixins仅用于共享代码还是数据也可以通过mixins共享?
最佳答案
Vuex 可能不会太过分。 Vuex 非常适合小型和大型项目。 Vue mixin 并不是为了保持全局状态。 Mixins 是 OOP 中的 extends 等价物。您基本上可以通过合并继承其上的所有内容,并且组件具有优先权。它只是为了共享行为(方法、数据、生命周期)。
免责声明:我不认为这会被社区接受,只是将其作为学习练习。
但是在 mixin 中保留某种“全局状态”的唯一方法是将其初始化对象包装在闭包中,并跟踪 react 对象中的信息,如下所示:
Vue.mixin((()=>{
let store = Vue.observable({
isLoading: true
})
return {
computed: {
isLoading: {
get(){
return store.isLoading
},
set(val){
store.isLoading = val
}
}
},
}
})())
这是一个 fiddle :https://jsfiddle.net/cuzox/ptsh283w/
再说一遍,我不赞同这种方法🙈
关于vuejs2 - 如何通过 vuejs 中的全局 mixins 在组件之间共享数据?为什么它没有反应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55633708/