Angular OnPush變化檢測策略介紹

2022-07-21 11:30:21 字數 1172 閱讀 8996

在onpush策略下,angular不會執行變化檢測(change detection ),除非元件的input接收到了新值。接收到新值的意思是,input的值或者引用發生了變化。這樣聽起來不好理解,看例子:

子元件接收乙個balls(別想歪:))輸入,然後在模板遍歷這個balls陣列並展示出來。初始化2秒後,往balls陣列push乙個new ball

@component(}

`})export class ballslist implements oninit,2000)

}}

注意:因為滑鼠鍵盤事件會觸發變化檢測,所以這裡使用定時器!

現在是不使用onpush策略的情況。2秒後,new ball就被新增到檢視中了。

當使用onpush變化檢測策略的時候,new ball並不會被新增到檢視中:

@component(}

`,changedetection: changedetectionstrategy.onpush

})export class ballslist implements oninit,2000)

}}

但是,如果在父元件改變input的值,檢視是會更新的,因為這樣angular會執行變化檢測:

@component()

balls: any = ['basketball','football'];

ngoninit(){}

changeref()

}這樣就相當於改變了balls的引用。

但是,如果不改變balls的引用,只給它push乙個值,檢視是不會更新的:

@component()

balls: any = ['basketball','football'];

ngoninit(){}

addball(ball)

}這時如果有需要,我們可以用changedetectorref.detectchanges()手動觸發變化檢測。

這樣解釋應該很清楚了!

變化的職場,變化的你

1月8日 時不時能夠聽到候選人或周圍人的抱怨 我太不喜歡這個環境 公司 了,政策又變了 也許他在希望,公司應該給人長期穩定的感覺,他不喜歡不確定。因為在不確定的時候,他可能就是 無辜受害者。我的建議是他應該把頭四周轉一下,看看周圍的情況。現實是一切都在變,他的希望是個不切實際的奢望。變化的根源當然是...

變化的職場,變化的你

1月8日 時不時能夠聽到候選人或周圍人的抱怨 我太不喜歡這個環境 公司 了,政策又變了 也許他在希望,公司應該給人長期穩定的感覺,他不喜歡不確定。因為在不確定的時候,他可能就是 無辜受害者。我的建議是他應該把頭四周轉一下,看看周圍的情況。現實是一切都在變,他的希望是個不切實際的奢望。變化的根源當然是...

需求在變化,思維在變化

做了這個遠端監控專案,發現開發專案其實相當具有挑戰性的,這種挑戰性主要表現在兩個方面 1 不斷變化的領導需求 或者客戶需求 2 並不熟練甚至並不了解的技術。最近看了一些 瘋狂的程式設計師 還是很羨慕絕影能在大學期間找到自己喜歡的方向,喜歡的事情,把自己喜歡的事情作為自己的工作甚至事業實際上是非常快樂...