javascript - Ako môžem obmedziť volania metód komponentu React pomocou RxJS
Mám nasledujúci TSX kód:
public render() {
return (
<div onWheel={this.onWheel}>
{children}
</div>
);
}
private onWheel(event: React.SyntheticEvent<HTMLDivElement>) {...}
Chcem pomocou RxJS obmedziť volania this.onWheel, aby sa predišlo častým volaniam metódy.
Ako to môžem urobiť?
Odpoveď č. 1
Priame riešenie je použiť podmet:
- Vytvorte subjekt a prihláste sa naň s obmedzením pri načítaní komponentu
- Volať jeho metódu 'next' pri každej udalosti
- Odhlásiť sa pri odmontovaní komponentu
Kód s odstránenými symbolmi TS:
render() {
return (
<div onWheel={e => this.onWheel$.next(e)}>
{children}
</div>
);
}
componentWillMount() {
this.onWheel$ = new Rx.Subject();
this.onWheel$.throttleTime(500).subscribe(this.onWheel);
}
componentWillUnmount() {
this.onWheel$.unsubscribe();
}
onWheel(event) {...}
Pozrite si tento jsfiddle pre fungujúci príklad.
