We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
从Vue的实例init()方式开始。
initState()
initData()
observe(data)
响应式的入口是observe(value)。
observe(value)
在创建observer对象时:
push
pop
shift
defineReactive
defineReactive方法为每一个属性创建对应的dep对象,让dep去收集依赖,如果当前属性的值是对象,会调用observe。
getter
setter
dep.notify()
收集依赖:
pushTarget
subs
childOb
Watcher:
在数据发生变化时,会调用dep.notify()发送通知。
dep.notify()会调用watcher对象的update()方法
update()中调用的queueWatcher()会去判断Watcher是否被处理,如果这个Watcher对象没有的话添加到queue队列中,并调用flushScheduleQueue()
update()
flushScheduleQueue()触发beforeUpdate钩子函数调用Watcher.run()
flushScheduleQueue()
run() → get() → getter() → updateComponent
清空上一次的依赖
触发active钩子函数
触发updated钩子函数
The text was updated successfully, but these errors were encountered:
No branches or pull requests
从Vue的实例init()方式开始。
initState()
初始化Vue实例的状态**;initData()
把data注入到Vue实例上,并且调用observe(data)
将data对象转化成响应式对象响应式的入口是
observe(value)
。在创建observer对象时:
push
、pop
、shift
等)defineReactive
方法defineReactive
方法为每一个属性创建对应的dep对象,让dep去收集依赖,如果当前属性的值是对象,会调用observe。getter
:收集依赖。为每一个属性收集依赖,如果这个属性的值是对象,要为子对象收集依赖,最后返回属性的值setter
:先保存新值,如果新值是对象,也要调用observe,把新设置的对象也转换成响应式的对象,然后派发更新(发送通知),调用dep.notify()
收集依赖:
pushTarget
,记录Dep,target属性defineReactive
的getter中收集依赖subs
数组中childOb
收集依赖,目的是子对象添加和删除成员时发送通知Watcher:
在数据发生变化时,会调用dep.notify()发送通知。
dep.notify()
会调用watcher对象的update()方法update()
中调用的queueWatcher()会去判断Watcher是否被处理,如果这个Watcher对象没有的话添加到queue队列中,并调用flushScheduleQueue()flushScheduleQueue()
触发beforeUpdate钩子函数调用Watcher.run()run() → get() → getter() → updateComponent
清空上一次的依赖
触发active钩子函数
触发updated钩子函数
The text was updated successfully, but these errors were encountered: