smalljs$molHledat⌘ KDokumentacePlaygroundPorovnáníEkosystémO projektuCS
Načítání datGetting StartedÚvodMyšlenkový modelZačínámeZ TypeScriptu do view.treeStruktura projektuNástrojeEssentialsInstalacePohledyStav a reaktivitaSměrováníVykreslováníTestováníNasazeníŘešení problémůDataNačítání datDatová schémataGiper BazaMoreVýkladní skříňZ React, Vue a SvelteKuchařkaAdvancedPluginyMetadata moduluOfflineGhost pohledyAboutČasté dotazyTýmVydáníAPI$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Načítání dat

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í.

Asynchronní vlastnost

Zavolejte síť uvnitř @ $mol_mem a vraťte rozparsovaný výsledek. V kódu není žádný příslib, žádné await ani callback:1namespace $.$$ {2 export class $my_users extends $.$my_users {3 @ $mol_mem4 users() {5 return this.$.$mol_fetch.json( 'https://api.example.com/users' ) as {6 id: number7 name: 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.

Vykreslení výsledku

Navažte vyřešená data přímo do seznamu:1 @ $mol_mem2 user_names() {3 return 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.

Znovunačtení

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_mem2 reload_token( next?: number ) {3 return next ?? 04 }5 6 @ $mol_mem7 users() {8 this.reload_token() // subscribe9 return this.$.$mol_fetch.json( 'https://api.example.com/users' ) as unknown[]10 }11 12 @ $mol_action13 reload() {14 this.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émata
Na této stránceAsynchronní vlastnostVykreslení výsledkuZnovunačteníChybyDále
Type to search the documentation.