smalljs$molПошук⌘ KДокументаціяПісочницяПорівнянняЕкосистемаПро проєктUK
Отримання данихGetting StartedВступМентальна модельПочаток роботиВід TypeScript до view.treeСтруктура проєктуІнструментарійEssentialsВстановленняВидиСтан і реактивністьМаршрутизаціяРендерингТестуванняДеплойРозв'язання проблемDataОтримання данихСхеми данихGiper BazaMoreВітринаЗ React, Vue та SvelteЗбірник рецептівAdvancedПлагіниМетадані модуляОфлайнПодання-привидиAboutЧасті питанняКомандаРелізи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

Отримання даних

Завантаження віддалених даних у $mol — це не окремий API: асинхронне значення — це просто реактивна властивість, написана так, ніби відповідь уже є. Подання чекає на неї, показує стан завантаження й перемальовується, коли дані надходять.

Асинхронна властивість

Покличте мережу всередині @ $mol_mem і поверніть розібраний результат. Ні проміса, ні await, ні колбека в коді немає: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 призупиняє волокно, доки не надійде відповідь, після чого обчислення перезапускається і users() повертає масив. Поки відповідь очікується, будь-яке подання, що читає users(), автоматично показує вбудований стан завантаження — ви не пишете жодного прапорця isLoading. Самі проміс із @ $mol_mem не повертайте: покладений у значення проміс лишає комірку в стані завантаження назавжди, див. Розв'язання проблем.this.$ — це контекст компонента. Кожен сервіс приходить через нього: $mol_fetch для мережі, $mol_state_arg для URL, $mol_after_timeout для часу. У тесті контекст підміняється, тож той самий users() надсилає свій запит у мок замість мережі, і в компоненті не змінюється жодного рядка. Цей мок показує Тестування.

Малювання результату

Прив'яжіть розв'язані дані прямо в список:1 @ $mol_mem2 user_names() {3 return this.users().map( user => user.name )4 }Коли надходить відповідь, users() оновлюється, user_names() переобчислюється, і список малюється. Ніяких колбеків, ніякого useEffect.

Перезавантаження

Оскільки це просто реактивна комірка, ви перезавантажуєте її, знецінюючи. Залежте від токена, який можна збільшувати: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 }
Редагувати цю сторінку на GitHubЦе було корисно?ТакНіНазадРозв'язання проблемДаліСхеми даних
На цій сторінціАсинхронна властивістьМалювання результатуПерезавантаженняПомилкиДалі
Type to search the documentation.