Appearance
resetStoreVM
javascript
function resetStoreVM (store, state, hot) {
// 存放所有 getters
store.getters = {}
const wrappedGetters = store._wrappedGetters
const computed = {}
forEachValue(wrappedGetters, (fn, key) => {
computed[key] = partial(fn, store)
Object.defineProperty(store.getters, key, {
get: () => store._vm[key],
enumerable: true // for local getters
})
})
store._vm = new Vue({
data: {
// 实现 state 响应式,$ 开头的属性不会代理到实例上
// 但是会挂载到 _data 上, 减少了一次代理
$$state: state
},
// 实现 getter
computed
})
}