mobx && mobx-react入门demo

2019-07-20  本文已影响0人  coffee1949
import React from "react";
import ReactDOM from "react-dom";
import { observable, action } from "mobx";
import { observer } from "mobx-react";

// create State objectlet 
const appState = observable({ timer: 0 });

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

// create observerlet 
const App = observer(
    // 敲黑板,这里是一个js代码,要加上花括号
    ({ appState }) => {    
        return (    
            <div className="App">
                <h1>Time passed: {appState.timer}</h1>
                <button onClick={appState.resetTimer}>reset timer</button>
            </div>
        );
    }
);

const root = document.getElementById("root");
// 敲黑板,下面通过属性把appStare传递过去了
ReactDOM.render(<App appState={appState} />, root);

添加注释

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

// create State objectlet 
const appState = observable(    // 只是使用了observable()包裹了下
    { timer: 0 }
);

// define action
setInterval(
    action(     // 只是使用了action()包裹了下
        () => {
            appState.timer += 1;
        }
    ),
    1000
);
appState.resetTimer = action(   // 使用action()包裹下
    () => {
        appState.timer = 0;
    }
);

// create observerlet 
const App = observer(
    // 函数定义组件,传递appState代替props
    // 这里使用了花括号包裹?
    ({ appState }) => {    
        return (    
            <div className="App">
                <h1>Time passed: {appState.timer}</h1>
                <button onClick={appState.resetTimer}>reset timer</button>
            </div>
        );
    }
);

const root = document.getElementById("root");
// 敲黑板,下面通过属性把appStare传递过去了
// 这里添加了appState属性,所以class App内部使用的也是appState
// 如果这里添加的属性是store呢,class App内部使用什么呢???
ReactDOM.render(<App appState={appState} />, root);
上一篇 下一篇

猜你喜欢

热点阅读