Načítání vzdálených dat v $mol není zvláštní API — asynchronní hodnota je prostě reaktivní vlastnost napsaná tak, jako by odpověď už byla na místě. Pohled na ni čeká, zobrazí stav načítání a překreslí se, když data dorazí.
Zavolejte síť uvnitř @ $mol_mem a vraťte rozparsovaný výsledek. V kódu není žádný příslib, žádné await ani callback:1namespace $.$${2export class $my_usersextends$.$my_users{3@ $mol_mem4users(){5return this.$.$mol_fetch.json('https://api.example.com/users')as{6id:number7name:string8}[]9}10}11}$mol_fetch pozastaví vlákno, dokud nedorazí odpověď, načež se výpočet spustí znovu a users() vrátí pole. Dokud čeká, každý pohled, který čte users(), automaticky zobrazí vestavěný stav načítání — nepíšete žádný příznak isLoading. Nevracejte z @ $mol_mem příslib sami: příslib uložený jako hodnota nechá buňku ve stavu načítání navždy, viz Řešení problémů.this.$ je kontext komponenty. Každá služba jde přes něj: $mol_fetch pro síť, $mol_state_arg pro URL, $mol_after_timeout pro čas. V testu se kontext vymění, takže tentýž users() pošle svůj požadavek na mock místo do sítě, aniž by se v komponentě změnil jediný řádek. Testování takový mock ukazuje.
Navažte vyřešená data přímo do seznamu:1@ $mol_mem2user_names(){3return this.users().map(user=>user.name)4}Když dorazí odpověď, users() se aktualizuje, user_names() se přepočítá a seznam se vykreslí. Žádné callbacky, žádný useEffect.
Protože je to jen reaktivní buňka, znovu načtete tím, že ji zneplatníte. Závisejte na tokenu, který můžete zvyšovat:1@ $mol_mem2reload_token(next?:number){3return next??04}56@ $mol_mem7users(){8this.reload_token()// subscribe9return this.$.$mol_fetch.json('https://api.example.com/users')asunknown[]10}1112@ $mol_action13reload(){14this.reload_token(this.reload_token()+1)15}Upravit tuto stránku na GitHubuBylo to užitečné?AnoNePředchozíŘešení problémůDalšíDatová schémataNa této stránceAsynchronní vlastnostVykreslení výsledkuZnovunačteníChybyDáleType to search the documentation.