smalljs$molجستجو⌘ Kمستنداتزمین بازیمقایسهاکوسیستمدربارهFA
دریافت دادهGetting Startedمعرفیمدل ذهنیشروع به کاراز تایپ‌اسکریپت به 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 صدا بزنید و نتیجهٔ پارس‌شده را برگردانید. نه promiseای در کد هست، نه 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 promise برنگردانید: promiseای که به‌عنوان مقدار ذخیره شود سلول را برای همیشه در وضعیتِ بارگذاری نگه می‌دارد، رفع اشکال را ببینید.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.