Stav v $mol se chová jako tabulkový procesor: deklarujete, jak se hodnota vypočítá, a vše, co na ní závisí, se aktualizuje samo. Žádné úložiště, žádný dispatch, žádné effect hooky — graf závislostí sleduje, co přepočítat.
Metoda ozdobená @ $mol_mem je uložená (cachovaná) reaktivní buňka. Spustí se jednou, zapamatuje si výsledek a přepočítá se jen tehdy, když se změnilo něco, co přečetla.1namespace $.$${2export class $my_counterextends$.$my_counter{3@ $mol_memcount(){return 0}45@ $mol_memdoubled(){6return this.count()*27}8}9}doubled čte count, takže se k count automaticky přihlásí. Změňte count a každý pohled zobrazující doubled se obnoví — není třeba se ničeho přihlašovat ručně.
Vlastnost je zároveň getter i setter: zavolejte ji bez argumentu pro čtení, s argumentem pro zápis.1@ $mol_action2increment(){3this.count(this.count()+1)4}
Toto jediné rozlišení udržuje reaktivní kód předvídatelný:@ $mol_mem je čistý výpočet — jen čte jiné buňky a vrací hodnotu.@ $mol_action je efekt — zápisy do stavu, síťová volání a časovače patří sem.Zápis do buňky zevnitř @ $mol_mem vytvoří zpětnovazební smyčku (zápis znehodnotí závislost, která se přepočítá a znovu zapíše). $mol to hlásí jako cyklické přihlášení. Oprava je vždy stejná: držte vedlejší efekty v akcích, výpočty udržujte čisté.V @ $mol_mem můžeteale neObslužné rutiny tlačítek se generují jako @ $mol_mem na základní třídě; přepište je pomocí @ $mol_action, aby mohly bezpečně zapisovat:1@ $mol_action2submit(){3this.saved(true)4}