我很難干凈地使用 NGRX 的資料訪問模式。所以現在我正在從我的 NGRX 存盤中提取資料,如下所示:
logBooksAndAuthors() {
const books$ = this.store.select(store => store.books);
const authors$ = this.store.select(store => store.authors);
books$.subscribe((books: Book[]) => {
authors$.subscribe((authors: Authors[]) => {
console.log(books);
console.log(authors);
});
});
}
根據業務邏輯,以這種方式從存盤中獲取資料可能會導致嵌套非常深的回呼。理想情況下,我想以更線性的方式重寫訂閱:
const books$ = this.store.select(store => store.books);
const authors$ = this.store.select(store => store.authors);
const books = books$.subscribe((books: Book[]) => {
return books;
});
const authors = $authors.subscribe((authors: Author[]) => {
return authors;
});
console.log(books); // logs out a subscriber
console.log(authors); // logs out a subscriber
}
據我所知,我上面的代碼將無法作業,因為books和authors被分配到在這種情況下的用戶,但我想指出,我怎么會非常撰寫代碼。提前謝謝你,如果我能澄清我的問題,請告訴我。
uj5u.com熱心網友回復:
每個都this.store.select將回傳一個流。由于我們這里有兩個流,為了使它們成為線性的,我們應該將它們組合起來。RxJS 有很多組合運算子。
這是使用示例 combineLatest
logBooksAndAuthors() {
combineLatest([
this.store.select(store => store.books),
this.store.select(store => store.authors)
]).subscribe(([books, authors]) => {
console.log(books, authors)
})
}
在此處檢查其他組合運算子以適合您的情況 https://www.learnrxjs.io/learn-rxjs/operators/combination
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/409244.html
標籤:
