計(jì)算屬性 computed:
- 計(jì)算屬性支持緩存,只有當(dāng)依賴項(xiàng)數(shù)據(jù)發(fā)生改變篙骡,才會(huì)重新進(jìn)行計(jì)算
- 計(jì)算屬性是不支持異步操作的,當(dāng)計(jì)算屬性computed內(nèi)有異步操作的時(shí)候,無(wú)法監(jiān)聽數(shù)據(jù)的變化闽巩,此時(shí)計(jì)>算屬性computed是無(wú)效的
- 如果計(jì)算屬性computed需要對(duì)數(shù)據(jù)進(jìn)行修改,需要寫get和set兩個(gè)方法担汤,當(dāng)數(shù)據(jù)變化時(shí)涎跨,就調(diào)用set方法
- 計(jì)算屬性computed擅長(zhǎng)處理的場(chǎng)景,就是一個(gè)數(shù)據(jù)受多個(gè)數(shù)據(jù)的影響崭歧;比如項(xiàng)目中的購(gòu)物車計(jì)算價(jià)格隅很,數(shù)據(jù)的全選和反選
偵聽器 watch
- 偵聽器是不支持緩存的,數(shù)據(jù)變化率碾,就會(huì)直接觸發(fā)響應(yīng)的操作
- watch支持異步的操作:監(jiān)聽的函數(shù)接受到兩個(gè)參數(shù)叔营,第一個(gè)參數(shù)是最新的值,第二個(gè)參數(shù)是輸入之前的值
- 偵聽器中的immediate屬性: immediate設(shè)置為 true 的意思就是組件加載立即觸發(fā)回調(diào)函數(shù)執(zhí)行
- 偵聽器中的deep屬性所宰,deep設(shè)置為 true 的意思就是深入偵聽绒尊,修改對(duì)象里面任何一個(gè)屬性都會(huì)觸發(fā)這個(gè)監(jiān)聽器里面的 handler 方法來(lái)處理響應(yīng)的邏輯
- 偵聽器watch擅長(zhǎng)處理的業(yè)務(wù)場(chǎng)景:一個(gè)數(shù)據(jù)影響多個(gè)數(shù)據(jù),比如項(xiàng)目中的搜索框
兩者總結(jié):
- 計(jì)算屬性computed和偵聽器watch的共同點(diǎn)在于:都具有監(jiān)聽數(shù)據(jù)屬性變化的功能
- 計(jì)算屬性computed和偵聽器watch的不同點(diǎn)在于 : 計(jì)算屬性是基于它們的響應(yīng)式依賴數(shù)據(jù)進(jìn)行緩存的仔粥,只有在依賴項(xiàng)數(shù)據(jù)發(fā)生改變的時(shí)候它們才會(huì)重新求值婴谱,性能開銷相對(duì)來(lái)說(shuō)比較行返;
偵聽器不是需要手動(dòng)進(jìn)行調(diào)用的谭羔,當(dāng)數(shù)據(jù)中的任何一個(gè)數(shù)據(jù)發(fā)生變化都會(huì)自動(dòng)觸發(fā)來(lái)進(jìn)行相應(yīng)的操作