Mobx 十分鐘快速入門

Store, Redux 和 Mobx

  • 前端數(shù)據(jù)流方案包括了 flux, redux 和 mobx. 在其中數(shù)據(jù)存儲的地方, 就叫做 store.

  • Redux:

  • Mobx

    • Mobx 是 flux 實現(xiàn)的后起之秀. 以更簡單的時候和更少的概念, 讓 flux 使用起來變得更簡單.
    • 相比 Redux 有mutation, action, dispatch 等概念. mobx則更加簡潔, 更符合對store 增刪改查的操作概念.

Mobx 快速入門

通過下述的代碼, 我們可以完成一個 react-mobx 實現(xiàn)的計數(shù)器. 點擊這里查看實際效果.

安裝依賴項: mobx, mobx-react

npm i mobx mobx-react

定義observable, observer 和 action

  • 定義一個狀態(tài)對象, 它具有可觀察的屬性, 我們將它稱為 observable
    • 首先我們需要定義一個狀態(tài)對象
    • 將其轉化為可觀察狀態(tài)
      • 將狀態(tài)對象傳遞給 mobx observable()
import {observable} from 'mobx';

let appState = observable({
    timer: 0
});
  • 創(chuàng)建一個react組件, 它能夠響應 observable 的變化, 我們將它稱為 observer
    • 創(chuàng)建一個 React 組件.
    • 將其轉化為 響應 observable 的組件
      • 使用 mobx-react observer() 來包裹它.
let App = observer(({ appState }) => {
    return (
        <div className="App">
            <h1>Time passed: {appState.timer}</h1>
        </div>
    );
});
  • 定義更改狀態(tài)的函數(shù), 我們將它稱為 action
    • 創(chuàng)建一個函數(shù)來更改 observable.
    • 使用 mobx action來包裹它.
setInterval(action(()=>{
  appState.timer +=1  
}), 1000) 

完整代碼

import React from "react";
import ReactDOM from "react-dom";
import { observable, action } from "mobx";
import { observer } from "mobx-react";

// create State object
let appState = observable({ timer: 0 });

// define action
setInterval(
    action(() => {
        appState.timer += 1;
    }),
    1000
);

appState.resetTimer = action(() => {
    appState.timer = 0;
});

// create observer
let App = observer(({ appState }) => {
    return (
        <div className="App">
            <h1>Time passed
: {appState.timer}</h1>
            <button onClick={appState.resetTimer}>reset timer</button>
        </div>
    );
});

const root = document.getElementById("root");
ReactDOM.render(<App appState={appState} />, root);

參考

https://mobx.js.org/intro/overview.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子悉患,更是在濱河造成了極大的恐慌,老刑警劉巖泣港,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蔬将,居然都是意外死亡爷速,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門霞怀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惫东,“玉大人,你說我怎么就攤上這事毙石×冢” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵徐矩,是天一觀的道長滞时。 經(jīng)常有香客問我,道長滤灯,這世上最難降的妖魔是什么坪稽? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮鳞骤,結果婚禮上窒百,老公的妹妹穿的比我還像新娘。我一直安慰自己豫尽,他們只是感情好篙梢,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著美旧,像睡著了一般渤滞。 火紅的嫁衣襯著肌膚如雪贬墩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天妄呕,我揣著相機與錄音陶舞,去河邊找鬼。 笑死绪励,一個胖子當著我的面吹牛吊说,可吹牛的內容都是我干的。 我是一名探鬼主播优炬,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼厅贪!你這毒婦竟也來了蠢护?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤养涮,失蹤者是張志新(化名)和其女友劉穎葵硕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贯吓,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡懈凹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了悄谐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片介评。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爬舰,靈堂內的尸體忽然破棺而出们陆,到底是詐尸還是另有隱情,我是刑警寧澤情屹,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布坪仇,位于F島的核電站,受9級特大地震影響垃你,放射性物質發(fā)生泄漏椅文。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一惜颇、第九天 我趴在偏房一處隱蔽的房頂上張望皆刺。 院中可真熱鬧,春花似錦官还、人聲如沸芹橡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽林说。三九已至煎殷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腿箩,已是汗流浹背豪直。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留珠移,地道東北人弓乙。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像钧惧,于是被迫代替她去往敵國和親暇韧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容

  • 本文首發(fā)于:CSDN「前端開發(fā)者說」公眾號涂乌。CSDN「前端開發(fā)者說」公眾號(ID:bigfrontend),專注前...
    RachelQG閱讀 4,808評論 2 20
  • 本文將開始詳細分析如何搭建一個React應用架構英岭。 一. 前言 現(xiàn)在已經(jīng)有很多腳手架工具湾盒,如create-reac...
    字節(jié)跳動技術團隊閱讀 4,275評論 1 23
  • 1. 介紹 1.1. 原理 React的render是 狀態(tài) 轉化為樹狀結構的渲染組件的方法而MobX提供了一種存...
    三月懶驢閱讀 12,852評論 1 28
  • 何為情緒,百度上這樣解釋:情緒诅妹,是對一系列主觀認知經(jīng)驗的通稱罚勾,是多種感覺、思想和行為綜合產(chǎn)生的心理和生理狀態(tài)吭狡。 我...
    深色皮膚閱讀 233評論 2 0
  • 花了一個下午的時間看完小說 夏至未至 那是一個會讓人心疼得稀里嘩啦的故事荧库。 我感動的不是小司和立夏,是顏末與陸之...
    二珂小太陽閱讀 285評論 0 0