2
我有一個基本的使用ngrx/store的redux實現。Angular 2 - ngrx訂閱在每個狀態更改上運行
//根減速
export const root = {
posts: fromPosts.reducer,
purchases: fromPurchases.reducer
}
export function getAllPosts(state) {
return fromPosts.getAll(state.posts);
}
export function getAllPurchases(state) {
return fromPurchases.getAll(state.purchases);
}
在我的組件,我選擇狀態件。
this.posts$ = store.select(getAllPosts).do(c => console.log('posts$ change'));
this.purchases$ = store.select(getAllPurchases).do(c => console.log('purchases$ change'));
但是對狀態的每一次改變,兩個處理程序都在運行。例如,當我添加帖子時,purchases$
處理程序也會運行。
所有的觀點是隻運行改變的部分,或者我錯了?
這不是真的,因爲在引擎蓋下select方法調用distinctUntilChanged。我也測試過你如何說,而且還是一樣的。 – ng2user
是的,你是對的。如果'select'正在通過你認爲沒有改變的切片,最可能的解釋是你對reducer或選擇器有問題,切片已經發生了變化。我建議使用'scan'或'buffer'運算符來驗證你的狀態是否符合你的期望。 – cartant