props
这一次,通过源码阅读,主要探索的方面包括如何初始化 Props、以及如何进行更新。
初始化
initState(vm);
function initState(vm) {
vm._watchers = [];
var opts = vm.$options;
if (opts.props) {
initProps(vm, opts.props);
}
// ...
}
function initProps(vm, propsOptions) {
var propsData = vm.$options.propsData || {}; // 获取Vue实例选项上的Props
var props = (vm._props = {}); // 获取挂载Vue实例上的_props
var keys = (vm.$options._propKeys = []); // Props的Key值组成的数组
// ...
for (var key in propsOptions) loop(key); // 循环遍历 vue 实例选项中Props,并且执行响应式处理以及挂载在对应实例上
// ...
}
大约 7 分钟