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)對象
    • 將其轉(zhuǎn)化為可觀察狀態(tài)
      • 將狀態(tài)對象傳遞給 mobx observable()
import {observable} from 'mobx';

let appState = observable({
    timer: 0
});
  • 創(chuàng)建一個react組件, 它能夠響應(yīng) observable 的變化, 我們將它稱為 observer
    • 創(chuàng)建一個 React 組件.
    • 將其轉(zhuǎn)化為 響應(yīng) 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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文首發(fā)于:CSDN「前端開發(fā)者說」公眾號。CSDN「前端開發(fā)者說」公眾號(ID:bigfrontend),專注前...
    RachelQG閱讀 4,894評論 2 20
  • 1. 介紹 1.1. 原理 React的render是 狀態(tài) 轉(zhuǎn)化為樹狀結(jié)構(gòu)的渲染組件的方法而MobX提供了一種存...
    三月懶驢閱讀 12,947評論 1 28
  • 何為情緒,百度上這樣解釋:情緒,是對一系列主觀認知經(jīng)驗的通稱,是多種感覺、思想和行為綜合產(chǎn)生的心理和生理狀態(tài)。 我...
    深色皮膚閱讀 286評論 2 0
  • 花了一個下午的時間看完小說 夏至未至 那是一個會讓人心疼得稀里嘩啦的故事。 我感動的不是小司和立夏,是顏末與陸之...
    二珂小太陽閱讀 319評論 0 0
  • 清晨 小鳥兒 一邊唱著歌 一邊問我 你的夢想是什么呀 哦 輕輕告訴你啦 做我所愛 愛我所愛呀 快告訴我 你...
    雪莉詩話閱讀 239評論 17 19

友情鏈接更多精彩內(nèi)容