import { observable } from "mobx"; class Store { @observable count = 0; }在這個(gè)例子中,我們定義了一個(gè)名為“Store”的類,并使用@observable裝飾器標(biāo)記了一個(gè)名為“count”的屬性。這意味著當(dāng)“count”屬性發(fā)生變化時(shí),所有依賴于它的組件都將自動(dòng)更新。 除了@observable之外,MobX還提供了其他一些裝飾器,用于定義計(jì)算屬性、動(dòng)作和反應(yīng)。例如,我們可以使用@computed裝飾器來(lái)定義一個(gè)基于現(xiàn)有狀態(tài)計(jì)算出來(lái)的屬性:
import { observable, computed } from "mobx"; class Store { @observable count = 0; @computed get doubledCount() { return this.count * 2; } }在這個(gè)例子中,我們定義了一個(gè)名為“doubledCount”的計(jì)算屬性,它基于“count”屬性計(jì)算出來(lái)。當(dāng)“count”屬性發(fā)生變化時(shí),“doubledCount”屬性也會(huì)自動(dòng)更新。 除了計(jì)算屬性之外,我們還可以使用@action裝飾器來(lái)定義一個(gè)動(dòng)作。動(dòng)作是一種可以修改狀態(tài)的方法,它可以幫助我們更好地控制狀態(tài)的變化。例如:
import { observable, action } from "mobx"; class Store { @observable count = 0; @action increment() { this.count++; } }在這個(gè)例子中,我們定義了一個(gè)名為“increment”的動(dòng)作,它可以將“count”屬性加1。當(dāng)我們調(diào)用“increment”方法時(shí),MobX會(huì)自動(dòng)更新所有依賴于“count”屬性的組件。 最后,我們還可以使用反應(yīng)來(lái)響應(yīng)狀態(tài)的變化。反應(yīng)是一種可以在狀態(tài)變化時(shí)自動(dòng)執(zhí)行的方法,它可以幫助我們更好地控制應(yīng)用程序的行為。例如:
import { observable, autorun } from "mobx"; class Store { @observable count = 0; } const store = new Store(); autorun(() => { console.log(store.count); }); store.count = 1; // 輸出1 store.count = 2; // 輸出2在這個(gè)例子中,我們定義了一個(gè)名為“autorun”的反應(yīng),它會(huì)在“count”屬性發(fā)生變化時(shí)自動(dòng)執(zhí)行。當(dāng)我們將“count”屬性設(shè)置為1和2時(shí),反應(yīng)會(huì)自動(dòng)輸出相應(yīng)的值。 總之,MobX是一個(gè)非常強(qiáng)大的狀態(tài)管理庫(kù),它可以幫助我們更輕松地管理應(yīng)用程序的狀態(tài)。通過(guò)使用@observable、@computed、@action和反應(yīng)等裝飾器,我們可以更好地定義和控制狀態(tài)的變化。如果您還沒(méi)有嘗試過(guò)MobX,那么我建議您花些時(shí)間學(xué)習(xí)它,它將會(huì)是您開發(fā)應(yīng)用程序的強(qiáng)大工具。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130862.html
摘要:原理分析的核心就是通過(guò)觀察某一個(gè)變量,當(dāng)該變量產(chǎn)生變化時(shí),對(duì)應(yīng)的內(nèi)的回調(diào)函數(shù)就會(huì)發(fā)生變化?;卣{(diào)函數(shù)若依賴外部環(huán)境,則無(wú)法進(jìn)行收集很好理解,的回調(diào)函數(shù)在預(yù)執(zhí)行的時(shí)候無(wú)法到達(dá)那一行代碼,所以收集不到。 Mobx解決的問(wèn)題 傳統(tǒng)React使用的數(shù)據(jù)管理庫(kù)為Redux。Redux要解決的問(wèn)題是統(tǒng)一數(shù)據(jù)流,數(shù)據(jù)流完全可控并可追蹤。要實(shí)現(xiàn)該目標(biāo),便需要進(jìn)行相關(guān)的約束。Redux由此引出了dispa...
摘要:我現(xiàn)在寫的這些是為了解決和這兩個(gè)狀態(tài)管理庫(kù)之間的困惑。這甚至是危險(xiǎn)的,因?yàn)檫@部分人將無(wú)法體驗(yàn)和這些庫(kù)所要解決的問(wèn)題。這肯定是要第一時(shí)間解決的問(wèn)題。函數(shù)式編程是不斷上升的范式,但對(duì)于大部分開發(fā)者來(lái)說(shuō)是新奇的。規(guī)模持續(xù)增長(zhǎng)的應(yīng) 原文地址:Redux or MobX: An attempt to dissolve the Confusion 原文作者:rwieruch 我在去年大量的使用...
摘要:是一個(gè)的簡(jiǎn)單可擴(kuò)展的狀態(tài)管理庫(kù)。它的副作用是自動(dòng)更新。該函數(shù)返回一個(gè)值,當(dāng)返回值為的時(shí)候,才會(huì)繼續(xù)觸發(fā)第一個(gè)函數(shù)。當(dāng)返回值為時(shí),不再繼續(xù)監(jiān)聽。包含一個(gè),該值用來(lái)區(qū)分執(zhí)行事件的類型。 mobx 能干什么 使用 react 寫小型應(yīng)用,數(shù)據(jù)、業(yè)務(wù)邏輯和視圖的模塊劃分不是很細(xì)是沒(méi)有問(wèn)題的。在這個(gè)階段,引入任何狀態(tài)管理庫(kù),都算是奢侈的。但是隨著頁(yè)面邏輯的復(fù)雜度提升,在中大型應(yīng)用中,數(shù)據(jù)、業(yè)務(wù)邏...
摘要:關(guān)心性能的情況下,需要手動(dòng)設(shè)置這時(shí)就需要引入狀態(tài)管理庫(kù)?,F(xiàn)在常用的狀態(tài)管理庫(kù)有和,本文會(huì)重點(diǎn)介紹,然后會(huì)將和進(jìn)行對(duì)比,最后展望下未來(lái)的狀態(tài)管理方面趨勢(shì)。如果在任何地方都修改可觀察數(shù)據(jù),將導(dǎo)致頁(yè)面狀態(tài)難以管理。 React 是一個(gè)專注于視圖層的庫(kù)。React 維護(hù)了狀態(tài)到視圖的映射關(guān)系,開發(fā)者只需關(guān)心狀態(tài)即可,由 React 來(lái)操控視圖。 在小型應(yīng)用中,單獨(dú)使用 React 是沒(méi)什么問(wèn)題...
摘要:隨后,執(zhí)行官給出一張當(dāng)張三存款發(fā)生變化之時(shí),此機(jī)構(gòu)的運(yùn)作時(shí)序圖的確,小機(jī)構(gòu)靠人力運(yùn)作,大機(jī)構(gòu)才靠制度運(yùn)轉(zhuǎn)。第一條語(yǔ)句創(chuàng)建觀察員第一條語(yǔ)句張三我們調(diào)用的時(shí)候,就創(chuàng)建了對(duì)象,對(duì)象的所有屬性都將被拷貝至一個(gè)克隆對(duì)象并將克隆對(duì)象轉(zhuǎn)變成可觀察的。 ================前言=================== 初衷:網(wǎng)上已有很多關(guān)于 MobX 源碼解讀的文章,但大多閱讀成本甚高。...
摘要:需要注意的是,在中,需要把數(shù)據(jù)聲明為。同時(shí)還提供了運(yùn)行時(shí)的類型安全檢查。在利用了,使異步操作可以在一個(gè)函數(shù)內(nèi)完成并且可以被追蹤。例如在中,數(shù)組并不是一個(gè),而是一個(gè)類的對(duì)象,這是為了能監(jiān)聽到數(shù)據(jù)下標(biāo)的賦值。 Redux是一個(gè)數(shù)據(jù)管理層,被廣泛用于管理復(fù)雜應(yīng)用的數(shù)據(jù)。但是實(shí)際使用中,Redux的表現(xiàn)差強(qiáng)人意,可以說(shuō)是不好用。而同時(shí),社區(qū)也出現(xiàn)了一些數(shù)據(jù)管理的方案,Mobx就是其中之一。 R...
閱讀 2125·2023-04-26 00:41
閱讀 1159·2021-09-24 10:34
閱讀 3585·2021-09-23 11:21
閱讀 4135·2021-09-22 15:06
閱讀 1569·2019-08-30 15:55
閱讀 909·2019-08-30 15:54
閱讀 1837·2019-08-30 15:48
閱讀 564·2019-08-29 13:58