[React + Mobx] Mobx and React intro: syncing the UI with the app state using observable and observer

Posted Answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[React + Mobx] Mobx and React intro: syncing the UI with the app state using observable and observer相关的知识,希望对你有一定的参考价值。

Applications are driven by state. Many things, like the user interface, should always be consistent with that state.
MobX is a general purpose FRP library that provides the means to derive, for example, a React based user interface automatically from the state and keep it synchronized.

The net result of this approach is that writing applications becomes really straight-forward and boilerplate free.

 

To synchronize the rendering of the state, we are going to use two functions from MobX. The first one is observable. We use observable to decorate our state to count attributes. We say, "MobX, please track this value, so that you can update observers whenever needed."

Next, we mark our component with the observer decorator from the MobX React package. It simply tells MobX, "This component‘s rendering can be derived from the relevant observables. Do so whenever needed."

const {observable} = mobx;
const {observer} = mobxReact;
const {Component} = React;

@observer class Counter extends Component{
  @observable count = 0;

  render(){
    return(
      <div>
        Counter: {this.count} <br/>
        <button onClick={this.inc}>+</button>
        <button onClick={this.dec}>-</button>
      </div>
    )
  }
  
  inc = () => {
    this.count++;
  }

  dec = () => {
    this.count--;
  }
}

ReactDOM.render(
  <Counter />,
  document.getElementById(‘app‘)
)

 

Also spreate the state with the component will also works:

const {observable} = mobx;
const {observer} = mobxReact;
const {Component} = React;

const appState = observable({
   count : 0
});
appState.inc = function(){
  this.count++;
}
appState.dec = function(){
   this.count--;
}

@observer class Counter extends Component{
  render(){
    return(
      <div>
        Counter: {this.props.store.count} <br/>
        <button onClick={this.inc}>+</button>
        <button onClick={this.dec}>-</button>
      </div>
    )
  }
  
  inc = () => {
    this.props.store.inc();
  }

  dec = () => {
    this.props.store.dec();
  }
}

ReactDOM.render(
  <Counter store={appState}/>,
  document.getElementById(‘app‘)
)

 

 

以上是关于[React + Mobx] Mobx and React intro: syncing the UI with the app state using observable and observer的主要内容,如果未能解决你的问题,请参考以下文章

mobx+react基础

[Mobx] Use MobX actions to change and guard state

使用 mobx-react-stores 开发 react 应用

React中的状态管理---Mobx

React中的状态管理---Mobx

react状态管理器之mobx