react-native + mobx 入門到放棄

react-native + mobx 入門到放棄

標簽(空格分隔): react mobx Android


作為一個剛開始看react-native的小白宪哩,找到的源碼我都看不太懂,還有涉及redux的知識。后面同事介紹mobx,因此記錄一下學習過程宅此。

redux 和 mobx

過多的內容這里不做敘述捌肴,請看下面鏈接(可以知道是什么和為什么式矫,很短)
如何理解 Facebook 的 flux 應用架構?
理解 React,但不理解 Redux缩赛,該如何通俗易懂的理解 Redux耙箍?
MobX vs Redux: Comparing the Opposing Paradigms - React Conf 2017 紀要

(對于redux,請參看Redux 入門教程(三):React-Redux 的用法

務必多看幾遍酥馍,下面開始辩昆。

react-native

安裝好所需的環(huán)境。
選擇一個目錄旨袒,執(zhí)行

react-native init FirstReact
cd FisrtReact
npm install 
react-native run-adnroid

至此RN的demo可以正常啟動汁针。

mobx

安裝mobx:
npm i mobx mobx-react --save
安裝mobx相關的包

npm i babel-plugin-transform-decorators-legacy babel-preset-react-native-stage-0 --save-dev
安裝一些 babel 插件,以支持 ES7 的 decorator 特性(后面有不用的方法砚尽, ES6)

然后打開 .babelrc 文件配置 babel 插件:

{
  "presets": ["react-native"],
  "plugins": [
    "syntax-decorators",
    "transform-decorators-legacy"  ]
}

依賴安裝完成施无。

在根目錄下創(chuàng)建mobxDemo文件夾。
新建AppState.js文件:

import {action, observable, useStrict} from "mobx";
import {extendObservable} from "mobx";

class AppState {
    @observable
    timer = 101;
    
    addTimers() {
        this.timer += 1
    }
    resetTimer() {
        this.timer = 0;
    }
}
export default new AppState()

@observable 指明需要觀察的對象(值必孤,列表猾骡,數(shù)組,類等敷搪。)
其他的 action卓练, computed可以后面去了解。

同目錄下新建文件:MobxDemo.js

@observer
class App extends React.Component {
    render() {
        return (
            <View>
                <Text>當前的數(shù)是:{AppState.timer}</Text>
                <Button
                    onPress={() =>
                        AppState.addTimers()}
                    title='add'
                />
                <Button
                    onPress={() =>
                        AppState.resetTimer()
                    }
                    title='reset'
                />
            </View>
        );
    }
}
export default App;

在需要觀察的地方加@observer购啄。

end

修改index.js文件:

import { AppRegistry } from 'react-native';
import App from './mobx/MobxDemo';
AppRegistry.registerComponent('FirstReact', () => App);

刷新運行程序襟企,完成對timer的加和重置。

ES6

在找資料的過程中狮含,基本沒有es6的相關實現(xiàn)顽悼。
中文文檔:http://cn.mobx.js.org/

下面是ES6不帶裝飾器的寫法:
AppState.js

import {action, observable, useStrict} from "mobx";
import {extendObservable} from "mobx";
class AppState {
    constructor() {
        let that = this;
        extendObservable(this, {
            timer: 11,
            get tenTimer() {
              return that.timer * 2
            },
            addTimers: action(function () {
                this.timer += 1
            }),
            resetTimer: action( () => {
                that.timer = 0
            })
        })
    }
}
export default new AppState()

MobxDemo.js

import React from "react";
import {observer} from "mobx-react";
import {View, Text, Button} from "react-native";
import AppState from './AppState'
const App = observer( class MobxDemo extends React.Component {
    render() {
        return (
            <View>
                <Text>當前的數(shù)是:{AppState.tenTimer}</Text>
                <Button
                    onPress={() =>
                        AppState.addTimers()}
                    title='add'
                />
                <Button
                    onPress={() =>
                        AppState.resetTimer()
                    }
                    title='reset'
                />
            </View>
        );
    }
})
export default App;

result: 統(tǒng)一數(shù)據(jù)處理,觀察几迄。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蔚龙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子映胁,更是在濱河造成了極大的恐慌木羹,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件解孙,死亡現(xiàn)場離奇詭異坑填,居然都是意外死亡,警方通過查閱死者的電腦和手機弛姜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門脐瑰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人廷臼,你說我怎么就攤上這事苍在【常” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵寂恬,是天一觀的道長续誉。 經常有香客問我,道長初肉,這世上最難降的妖魔是什么屈芜? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮朴译,結果婚禮上井佑,老公的妹妹穿的比我還像新娘。我一直安慰自己眠寿,他們只是感情好躬翁,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盯拱,像睡著了一般盒发。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狡逢,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天宁舰,我揣著相機與錄音,去河邊找鬼奢浑。 笑死蛮艰,一個胖子當著我的面吹牛,可吹牛的內容都是我干的雀彼。 我是一名探鬼主播壤蚜,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼徊哑!你這毒婦竟也來了袜刷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤莺丑,失蹤者是張志新(化名)和其女友劉穎著蟹,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梢莽,經...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡萧豆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蟹漓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炕横。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡源内,死狀恐怖葡粒,靈堂內的尸體忽然破棺而出份殿,到底是詐尸還是另有隱情,我是刑警寧澤嗽交,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布卿嘲,位于F島的核電站,受9級特大地震影響夫壁,放射性物質發(fā)生泄漏拾枣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一盒让、第九天 我趴在偏房一處隱蔽的房頂上張望梅肤。 院中可真熱鬧,春花似錦邑茄、人聲如沸姨蝴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽左医。三九已至,卻和暖如春同木,著一層夾襖步出監(jiān)牢的瞬間浮梢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工彤路, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秕硝,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓洲尊,卻偏偏與公主長得像邀泉,于是被迫代替她去往敵國和親匾南。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容