在 state.js 的 initData()
函數中,使用的是 observe()
方法來爲數據對象綁定一個Observer對象,Observer對象執行 defineReactive()
方法爲數據對象設置 setter 和 getter。
而在 initProps()
函數中,通過遍歷 props
選項直接對數據執行了 defineReactive()
方法來設置 setter 和 getter。
Observer類主要做的事情就是對數據進行雙向綁定,通過Object.defineProperty來做數據劫持,然後會實例化一個Dep類。
PS:我們在開發中,可以用observer代替模塊裏的狀態管理
store.js
import Vue from 'vue';
export const state = Vue.observable({
name:'',
password:''
});
export const mutations = {
setName: setName => (state.name = setName),
setPassword: setPassword=>(state.password=setPassword)
};
應用:
import {state , mutations} from './store';
mutations.setName('張三');