RxJS
をピア依存として持つlibを開発しており、webpack
を使ってバンドルしています。 externals: [require("webpack-rxjs-externals")()]
を設定して、RxJSをバンドルから除外するようにwebpackを設定しました。Rib.Observableを返すLib関数は新しい演算子を継承しません
このlibにはObservableを返す関数があります。ような何か:
import { from } from 'rxjs/observable/from'
import { map, distinctUntilChanged } from 'rxjs/operators'
export default function xpto(predicate) {
return from(this).pipe(
map(predicate),
distinctUntilChanged()
)
}
この機能は、その後観察可能なフックを公開するオブジェクトにバインドし、期待どおりに動作します。
私はまたRxJSを含めてにそれらをパッチプロトタイプでRX事業者のカップルを追加しました別のプロジェクト、にこのLIBをインポートするときに問題が発生:にパッチを適用することにより
import 'lib' // the one with xpto function
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/filter'
// this breaks because although xpto returns an Observable
// it somehow wasn't patched with the filter operator
xpto(predicate).filter(whatever).subscribe(etc)
Observableプロトタイプ、Observableインスタンスxpto
が返され、インポートされた演算子がプロトタイプチェーンを介してアクセス可能であることが期待されましたが、そうではありません。
どうすればxpto
機能がバインドされているのでしょうか?それが何であるかウェブパックはこれをバンドルしていますか?私はここで何が欠けていますか?
何が 'にバインドすることxpto'で' this'べきでしょうか? –
@ dev-null、私はReduxストアオブジェクトを拡張していますので、バインドされています。アイデアは、ストアの状態のObservableセレクタを持つことです。 –
コードが完全ではないため、コードをバインドする際に間違いがあったかどうかは分かりません。 –