Přecházíme z MobX na RxJS (abychom používali jeden standard pro observables, ne 2). MobX funguje velmi dobře, ba až zázračně out-of-the-box s Reactem. Změní se hodnota, změní se co je vyrendrované. Tahle jeho zázračnost je však zároveň jeho slabou stránkou. Jsou případy, kdy prostě nefunguje, blbne a proto přecházíme na více průhledné Rx.
Pokud mám nějaký stav v RxJS observable, a mám komponentu ve které chci vždy vykreslovat podle aktuální hodnoty té observable, udělal jsem na to statefull komponentu ObservableContentComponent.
Je tam však drobný problém s časováním, pokud přiteče hodnota ještě dřív, než renderovaná react komponenta, komponenta se nedostane k první (případně aktuální hodnotě která už přitekla), ale čeká na další.
Napsal jsem na to utilitu observableWithInitial, která bere observable A a hodnotu B a vrátí observable C, do které za immediate přiteče hodnota B a zároveň do ní budou přitékat nové hodnoty z observable A.
<ObservableContentComponent
content={observableWithInitial(
this.systems.routingSystem.path.values,
this.systems.routingSystem.path.value,
)…..
Zároveň mám takové trochu tušení, zda nevymýšlím kolo a zda není nějaké jednodušší a oficiální řešení, jak elegantně regenerovat Rx observables v rámci Reactu?
https://www.facebook.com/groups/122523375226096/permalink/912726802872412/
https://m.facebook.com/story.php?story_fbid=10219729149645345&id=1416254989
https://www.linkedin.com/posts/hejny_p%C5%99ech%C3%A1z%C3%ADme-z-mobx-na-rxjs-abychom-pou%C5%BE%C3%ADvali-activity-6772185718631473153-8mU_
Btw. tohle je, jak to funguje. Funguje to, ale jak říkám nevím, zda nevymýšlím kolo, ale neelegantně:
https://codesandbox.io/s/async-stuff-in-rxjs-972e9?file=/src/App.tsx