MobX學習筆記

2022-08-02 13:21:12 字數 1381 閱讀 8203

官方把mobx介紹為「簡單,可擴充套件的狀態管理」。

mobx是乙個狀態管理工具,用來儲存和更新狀態。

react 和 mobx 是一對強力組合。react 通過提供機制把應用狀態轉換為可渲染元件樹並對其進行渲染。而mobx提供機制來儲存和更新應用狀態供 react 使用。

mobx 的靈感來自excel**中的反應式程式設計原理。

mobx通常是搭配react使用,由react提供優化ui渲染的機制,mobx則負責協助react管理應用狀態,在需要時更新並且始終保持最新的。

react自身管理狀態是通過state和setstate來進行處理的。但是state如果沒有用好的話會帶來一些麻煩,state的每一次改變都會使元件進行重新的渲染,如果改變過於頻繁則會帶來效能上的降低。並且,當應用變得負責,元件層級變得更深,狀態的管理也會越來越複雜。因此,我們更傾向於使用react+mobx的形式,哪個元件需要哪個狀態就單獨繫結該狀態,資料改變元件就重新渲染。這樣,成本更低,形式也更簡潔。

學習mobx,主要是理解observable(觀察狀態), reaction(反應,主要是對狀態的響應), action(動作,主要是對狀態的改變), computed(衍生,主要是對狀態的響應)四個基礎概念,基本上mobx的機制都建立在這幾個概念之上,理解了概念學習起來會更順利,也能夠更好地運用在實踐中。

observable

需要被觀察的物件就加上@observable beobservedobj

reactions

反應,state狀態發生變化引起的***,例如列印日誌、更新react dom樹。每當觀察的物件的引用發生了變化,它就會重新執行。

使用reaction, autorun, when可以建立自定義reactions。

computed

設想這樣乙個場景:對於table元件的column屬性,table的每一列資料,都是資料庫儲存的某個列表的各個資料的對映。從資料庫獲取這個列表,將其作為乙個observable物件被觀察。每當列表的值發生了變化,column中的資料也會隨之發生變化,所以說column裡的資料都是列表資料屬性衍生出來的值,這個場景就要對column這個屬性用@computed

action

動作是用來修改狀態的東西

比如用於分頁的pagination元件,會使用到index, size屬性,這些屬性都是被觀察的狀態。

使用者這時想要更改一頁顯示的資料,從10條改為20條。**的邏輯是修改size變成20,就在onchange方法裡修改this.size = 20。onchange方法對被觀察的狀態進行了修改,這就是一次action,onchange方法前就應該加上@action

Mobx配置文件

yarn add babel plugin transform decorators legacy d yarn add babel preset env d yarn add babel plugin transform class properties d yarn add babel plug...

react中mobx失效問題

發現問題 小白解決過程 第一 找關鍵點,即 觸發到問題。第二 觸發後執行了哪些操作。第三 操作業務問題是否正常。第四 與正常業務比較,差別在 第五 思考問題。第六 求助。小白感覺自己發現問題後,處理問題,找到問題的效率很低不知道是不是我的思路出現了問題,希望得到大佬們的支援。最後 發現問題是,在re...

react native 加入mobx後 報錯

react native 0.57版本之後將全面公升級babel 7,babel 6 將無法執行。搞了一天才搞定,醉了。話不多說,解決方案是,重新安裝如下四個庫 babel core babel plugin proposal decorators babel plugin transform ru...