$mol-এর স্টেট স্প্রেডশিটের মতো আচরণ করে: আপনি ঘোষণা করেন একটি মান কীভাবে গণনা হবে, আর তার ওপর নির্ভরশীল সবকিছু নিজে থেকেই আপডেট হয়। কোনো স্টোর নেই, ডিসপ্যাচ নেই, ইফেক্ট হুক নেই——ডিপেন্ডেন্সি গ্রাফ কী পুনরায় গণনা করতে হবে তা ট্র্যাক করে।
@ $mol_mem দিয়ে ডেকোরেট করা একটি মেথড হলো একটি ক্যাশড, রিয়্যাক্টিভ সেল। এটি একবার চলে, ফলাফল মনে রাখে, এবং শুধু তখনই পুনরায় গণনা করে যখন এটি যা পড়েছিল তার কিছু পরিবর্তিত হয়।1namespace $.$${2export class $my_counterextends$.$my_counter{3@ $mol_memcount(){return 0}45@ $mol_memdoubled(){6return this.count()*27}8}9}doubledcount পড়ে, তাই এটি স্বয়ংক্রিয়ভাবে count-এ সাবস্ক্রাইব করে। count পরিবর্তন করুন, আর doubled দেখানো প্রতিটি ভিউ রিফ্রেশ হয়——হাতে কিছু সাবস্ক্রাইব করার নেই।
একটি প্রপার্টি একই সঙ্গে গেটার ও সেটার: পড়ার জন্য আর্গুমেন্ট ছাড়া কল করুন, লেখার জন্য একটি আর্গুমেন্ট সহ।1@ $mol_action2increment(){3this.count(this.count()+1)4}
এই একটি পার্থক্যই রিয়্যাক্টিভ কোডকে অনুমেয় রাখে:@ $mol_mem হলো একটি বিশুদ্ধ গণনা——শুধু অন্য সেল পড়ে এবং একটি মান রিটার্ন করে।@ $mol_action হলো একটি ইফেক্ট——স্টেটে লেখা, নেটওয়ার্ক কল ও টাইমার এখানে থাকে।@ $mol_mem-এর ভেতর থেকে একটি সেলে লিখলে একটি ফিডব্যাক লুপ তৈরি হয় (লেখা একটি ডিপেন্ডেন্সি অকার্যকর করে, যা পুনরায় গণনা হয়, যা আবার লেখে)। $mol একে সার্কুলার সাবস্ক্রিপশন হিসেবে রিপোর্ট করে। সমাধান সবসময় একই: সাইড ইফেক্ট অ্যাকশনে রাখুন, গণনা বিশুদ্ধ রাখুন।@ $mol_mem-এ আপনি পারেনকিন্তু পারেন নাবোতামের হ্যান্ডলার বেস ক্লাসে @ $mol_mem হিসেবে জেনারেট হয়; নিরাপদে লেখার জন্য সেগুলোকে @ $mol_action দিয়ে ওভাররাইড করুন:1@ $mol_action2submit(){3this.saved(true)4}