Vue.observable
文章类型:Vue
发布者:admin
发布时间:2023-03-21
Vue.observable 是vue2.6版本新增,可以实现一些简单的跨组件数据状态共享,(小型状态管理器)
一:定义
observable()方法,用于设置监控属性,这样就可以监控view视图Module中的属性值的变化,通过返回一个函数给viewModule对象中的属性,让一个对象变成响应式数据。Vue 内部会用它来处理 data 函数返回的对象
1:可以直接用于渲染函数和计算属性,发生变更时触发相应的更新
2:可以作为最小化的跨组件状态存储器
Vue2 中,传入的对象会直接被 Vue.observable 变更,它和被返回的对象是同一个对象
Vue3中,则会返回一个可响应的代理,而对源对象直接进行变更仍然是不可响应的
二:使用场景
多个组件之间数据的共享和更新,避免使用vuex、事件总线,更简洁
三:代码
1:基本
//效果一样
Vue.observable({ count : 1})
new vue({ count : 1})
2:常规使用
// 引入vue
import Vue from 'vue
// 创建state对象,使用observable让state对象可响应
export let state = Vue.observable({
name: '张三',
'age': 38
})
// 创建对应的方法
export let mutations = {
changeName(name) {
state.name = name
},
setAge(age) {
state.age = age
}
}
export default {
// 在计算属性中拿到值
computed: {
name() {
return state.name
},
age() {
return state.age
}
},
// 调用mutations里面的方法,更新数据
methods: {
changeName: mutations.changeName,
setAge: mutations.setAge
}