init的处理顺序
第一部:
import App from './App.vue'
const app = new Vue(App);
app.$mount();
第二部:Vue
this._init(options);
第三部:各种初始化,中间夹杂着生命周期
initLifecycle(vm);
initEvents(vm);
initRender(vm);
callHook(vm, "beforeCreate");
initInjections(vm); // resolve injections before data/props
initState(vm); /**初始化data、props、methods、computed、watch */
initProvide(vm); // resolve provide after data/props
callHook(vm, "created");
initState的处理逻辑
疑问🤔️:为什么先是处理,props,methods,才处理data
答疑:data中处理,props中或者method的方法,method中,也会使用props中的字段
依次处理
initProps(vm, opts.props);
initMethods(vm, opts.methods);
initData(vm) || observe((vm._data = {}), true /* asRootData */);
initComputed(vm, opts.computed);
initWatch(vm, opts.watch);