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
}