[英]RxJs custom operator cant access 'this'
我創建了一個訪問this
的自定義運算符,但它似乎始終未定義,即使我使用bind
傳遞給函數this
自定義運算符
function shouldLoadNewOptimizationData() {
return filter(function([p1,p2,p3]) {
// some logic
if(){
this.store.dispatch()...
}
})
}
自定義運算符用法
effect = createEffect(()=> this.actions$.pipe(
ofType(//action type),
withLatestFrom(
//...selectors
),
shouldLoadNewOptimizationData().bind(this),
// more operators..
)
)
通常 rxjs 自定義運算符會妨礙
function myOperator<T>(source: Observable<T>) {
...some logic...
return source; //or return source.pipe(....)
}
或者有論據
function myOperator<T>(...args) {
return function<T>(source: Observable<T>): Observable<T> {
..some logic..
return source //or return source.pipe(....)
};
}
看到這個很棒的鏈接
將商店傳遞給shouldLoadNewOptimizationData
。 這樣您就可以避免每次使用該函數時都必須綁定this
:
function shouldLoadNewOptimizationData(store) {
return filter(function([p1,p2,p3]) {
// some logic
if(){
store.dispatch()... // -> use the provided store instead of `this.store`
}
})
}
effect = createEffect(()=> this.actions$.pipe(
ofType(//action type),
withLatestFrom(
//...selectors
),
shouldLoadNewOptimizationData(this.store),
// more operators..
);
更改為箭頭功能
function shouldLoadNewOptimizationData() {
return filter(([p1,p2,p3]) => {
// some logic
if(){
this.store.dispatch()...
}
})
}
如果你想要完整的角度 15(誰需要this
,裝飾器,ngmodules,構造器,......)
import { Store } from '@ngrx/store';
...
const shouldLoadNewOptimizationData = () => {
const store = inject(Store)
return filter(([p1,p2,p3]) => {
// some logic
if(){
store.dispatch()...
}
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.