vue2源码分析-new vue发生了什么
src/core/instance/index.js
initMixin
注册_init
方法
initLifecycle(vm)
initEvents(vm)
initRender(vm)
callHook(vm, 'beforeCreate')
initInjections(vm) // resolve injections before data/props
initState(vm)
initProvide(vm) // resolve provide after data/props
callHook(vm, 'created')
挂载vm.$mount(vm.$options.el)
mounted 里如何访问 data 里的数据initState()
-> initData()
data 也会赋值给 _data
proxy((target: Object), (sourceKey: string), (key: string)) {}
//initData方法里调 proxy()
initData(vm: Component) {
data = vm._data = typeof data === 'function'
? getData(data, vm)
: data || {}
const keys = Object.keys(data)
// ...
proxy(vm, `_data`, key)
// 数据响应式处理
observe(data ,true)
}
vue初始化就干了这几件事 合并配置、初始化生命周期、初始化事件中心、初始化渲染、初始化data、props、computed、watcher等等
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Jonathan
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果