smalljs$molঅনুসন্ধান⌘ Kডকুমেন্টেশনপ্লেগ্রাউন্ডতুলনাইকোসিস্টেমসম্পর্কেBN
ডেটা ফেচিং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-এর ভেতরে নেটওয়ার্ক ডাকুন আর পার্স করা ফলটি রিটার্ন করুন। কোডে কোনো 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, URL-এর জন্য $mol_state_arg, সময়ের জন্য $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.