成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

個人愚見:Redux 和 Mobx 區(qū)別

dcr309duan / 2916人閱讀

摘要:一關(guān)于狀態(tài)管理它們都有統(tǒng)一維護管理應用狀態(tài)的能力某一狀態(tài)只有一個可信數(shù)據(jù)來源通常命名為,指狀態(tài)容器操作更新狀態(tài)方式統(tǒng)一,并且可控通常以方式提供更新狀態(tài)的途徑支持將與組件連接,如,通常使用狀態(tài)管理庫后,我們將組件從業(yè)務上劃分為兩類容器組件

一. 關(guān)于狀態(tài)管理

它們都有統(tǒng)一維護管理應用狀態(tài)的能力;

某一狀態(tài)只有一個可信數(shù)據(jù)來源(通常命名為store,指狀態(tài)容器);
操作更新狀態(tài)方式統(tǒng)一,并且可控(通常以action方式提供更新狀態(tài)的途徑);
支持將store與React組件連接,如react-redux,mobx-react;通常使用狀態(tài)管理庫后,我們將React組件從業(yè)務上劃分為兩類:
    容器組件(Container Components):負責處理具體業(yè)務和狀態(tài)數(shù)據(jù),將業(yè)務或狀態(tài)處理函數(shù)傳入展示型組件;
    展示型組件(Presentation Components):負責展示視圖,視圖交互回調(diào)內(nèi)調(diào)用傳入的處理函數(shù);

二. 關(guān)注點的不同

1. Redux更多的是遵循Flux模式的一種實現(xiàn),是一個JavaScript庫,它的關(guān)注點在于:
     Action:一個JavaScript對象,描述動作相關(guān)信息,主要包含type屬性和payload屬性:
     Reducer:定義應用狀態(tài)如何響應不同動作(action),如何更新狀態(tài);
     Store:管理action和reducer及其關(guān)系的對象,主要提供以下功能:
          1>. 維護應用狀態(tài)并支持讀取訪問狀態(tài)(getState());
          2>. 支持監(jiān)聽action的分發(fā),更新狀態(tài)(dispatch(action));
          3>. 支持訂閱store的變更(subscribe(listener));
          4>. 支持通過中間件(redux-thunk、redux-saga、redux-promise等)處理異步任務流程
2. Mobx是一個透明函數(shù)響應式編程的狀態(tài)管理庫,它使得狀態(tài)管理簡單可伸縮,它的關(guān)注點在于:
    Action:定義改變狀態(tài)的動作函數(shù),包括如何變更狀態(tài);
    Store:集中管理模塊狀態(tài)(State)和動作(action);
    Derivation(衍生):從應用狀態(tài)中派生而出,且沒有任何其他影響的數(shù)據(jù),我們稱為derivation(衍生),衍生在以下情況下存在:
       1>. 用戶界面;
       2>. 衍生數(shù)據(jù), 衍生主要有兩種:
        Computed Values(計算值):計算值總是可以使用純函數(shù)(pure function)從當前可觀察狀態(tài)中獲??;
        Reactions(反應):反應指狀態(tài)變更時需要自動發(fā)生的副作用,這種需要實現(xiàn)其讀寫操作;

三. 設(shè)計思想的不同

Redux 更多的是遵循函數(shù)式編程思想
Mobx 設(shè)計更多偏向于面向?qū)ο缶幊毯晚憫骄幊?,通常將狀態(tài)包裝成可觀察對象,一旦狀態(tài)對象變更,就能自動獲得更新。

四. 對store管理的不同

Redux將所有共享的數(shù)據(jù)集中在一個大的store中,統(tǒng)一管理
Mobx是按模塊將狀態(tài)劃分出多個獨立的store進行管理

五. 數(shù)據(jù)可變性的不同

Redux強調(diào)的是對象的不可變性,不能直接操作狀態(tài)對象,而是在原來狀態(tài)對象的基礎(chǔ)上返回一個新的狀態(tài)對象,最后返回應用的上一狀態(tài)
Mobx中可以直接使用新值更新狀態(tài)對象

六. 學習成本方面

Redux 較繁瑣,流程較多,需要配置,創(chuàng)建store,編寫reducer,action,如果涉及異步任務,還需要引入中間件
Mobx 流程相對就簡單很多,根據(jù)文檔上手也比較快

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/100472.html

相關(guān)文章

  • 七分設(shè)計感的純Flutter項目(Mung三部曲)

    摘要:版版版是一個基于編寫,使用豆瓣開源開發(fā)的一個項目。提示左右豆瓣把開源關(guān)了,現(xiàn)在使用的別的開發(fā)者的地址,項目是抽出來的后期可以自己改,現(xiàn)在項目使用的是,可以正常運行。React版Mung React-Native版Mung Flutter版Mung Mung-Flutter 1. Mung-Flutter:是一個基于Flutter編寫,使用豆瓣開源API開發(fā)的一個項目。 showImg(ht...

    khlbat 評論0 收藏0
  • React組件設(shè)計實踐總結(jié)05 - 狀態(tài)管理

    摘要:要求通過要求數(shù)據(jù)變更函數(shù)使用裝飾或放在函數(shù)中,目的就是讓狀態(tài)的變更根據(jù)可預測性單向數(shù)據(jù)流。同一份數(shù)據(jù)需要響應到多個視圖,且被多個視圖進行變更需要維護全局狀態(tài),并在他們變動時響應到視圖數(shù)據(jù)流變得復雜,組件本身已經(jīng)無法駕馭。今天是 520,這是本系列最后一篇文章,主要涵蓋 React 狀態(tài)管理的相關(guān)方案。 前幾篇文章在掘金首發(fā)基本石沉大海, 沒什么閱讀量. 可能是文章篇幅太長了?掘金值太低了? ...

    ideaa 評論0 收藏0
  • React 狀態(tài)管理庫: Mobx

    摘要:關(guān)心性能的情況下,需要手動設(shè)置這時就需要引入狀態(tài)管理庫?,F(xiàn)在常用的狀態(tài)管理庫有和,本文會重點介紹,然后會將和進行對比,最后展望下未來的狀態(tài)管理方面趨勢。如果在任何地方都修改可觀察數(shù)據(jù),將導致頁面狀態(tài)難以管理。 React 是一個專注于視圖層的庫。React 維護了狀態(tài)到視圖的映射關(guān)系,開發(fā)者只需關(guān)心狀態(tài)即可,由 React 來操控視圖。 在小型應用中,單獨使用 React 是沒什么問題...

    liujs 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<