鍍金池/ 問答/HTML/ vue的watcher函數(shù)里對于getter的返回值的一些疑惑

vue的watcher函數(shù)里對于getter的返回值的一些疑惑

在看vue源碼的時候按他的執(zhí)行步驟自己看了下具體調(diào)用:

new Vue() -> vm._init() -> vm.$mount(vm.$options.el)              
->mountComponent(this, el, hydrating) -> 
mountComponent函數(shù)里面有:
1.updateComponent = function() {
   vm._update(vm._render(), hydrating);
}
2.new Watcher(vm, updateComponent, noop, null, true)

在watcher方法里第二個參數(shù)為expOrFn,這個值被賦值給getter,在函數(shù)最后調(diào)用了watcher原型上的get, value = this.getter.call(vm, vm), 所以應(yīng)該調(diào)用上面1中的_update, 但是這個方法沒有返回值啊,所以卡到這一步就很疑惑,求大神指導(dǎo),萬分感謝!

回答
編輯回答
青裙

watcher的這個getter就是一個函數(shù)跑起來,給內(nèi)部處理一些vm屬性用的,不是拋給外面用的,不需要操心它做了什么。

另外,你看的這個地方的watcher在監(jiān)聽開發(fā)模式區(qū)別渲染方式。
我們用vue開發(fā)的時候,數(shù)據(jù)變化不需要刷新頁面,vue自動更新,它自動更新就是靠的這個wather(調(diào)用vm._render()),這種操作是內(nèi)部處理,接收的值都是按需出入,也就無需拋出返回值(注意看watcher.value調(diào)用的地方,都是函數(shù)在執(zhí)行而已)

2017年8月18日 22:54
編輯回答
壞脾滊

_update是vdom下面的,通知vdom需要變化的吧...

2017年4月17日 10:13