Vue中computed的完成原理是什么?时间:2024/6/4作者:未知来源:争怎路由网人气: noop,
noop,
computedWatcherOptions
)
}
// component-defined computed properties are already defined on the
// component prototype. We only need to define computed properties defined
// at instantiation here.
if (!(key in vm)) {
defineComputed(vm, key, userDef)
} else if (process.env.NODE_ENV !== 'production') {
if (key in vm.$data) {
warn('The computed property "${key}" is already defined in data.', vm)
} else if (vm.$options.props && key in vm.$options.props) {
warn('The computed property "${key}" is already defined as a prop.', vm)
}
}
}
} 从这段代码开始我们观察这几部分: 获取计算属性的定义 userDef 和 getter 求值函数 const userDef = computed[key]
const getter = typeof userDef === 'function' ? userDef : userDef.get定义一个计算属性有两种写法,一种是直接跟一个函数,另一种是添加 set 和 get 方法的对象形式,所以这里首先获取计算属性的定义 userDef ,再根据 userDef 的类型获取相应的 getter 求值函数。 计算属性的观察者 watcher 和消息订阅器 dep watchers[key] = new Watcher(
vm,
getter 关键词:Vue中computed的完成原理是啥?
| |