React 状态管理方法之 mobx
这里介绍 mobx + mobx-react 结合使用的方法。
创建 store 方法
// store.js
import {observable, action} from 'mobx';
class Store {
  @observable
  count = 0;
  @action
  handleCount() {
    this.count += 1;
  }
}
export default new Store();
根组件通过 Provider 注入 store
import { Provider } from 'mobx-react';
function App() {
  return (
    <Provider store={store}>
      <div className="App">
        <ComponentClass></ComponentClass>
        <ComponentFun></ComponentFun>
      </div>
    </Provider>
  );
}
export default App;
类组件(class)访问 store 方法
import React, { Component } from 'react';
import {inject, observer} from 'mobx-react';
import {toJS} from 'mobx'; // 查看store中原始JavaScript数据结构
@inject('store')
@observer
class ComponentClass extends Component {
  handleClick = () => {
    this.props.store.handleCount();
  };
  render() {
    console.log(toJS(this.props.store));
    return (
      <div>
        count: {this.props.store.count}
        <button onClick={this.handleClick}>add one</button>
      </div>
    )
  }
}
export default ComponentClass;
函数组件使用 store 方法
import React from 'react'
import {inject, observer} from 'mobx-react';
const ComponentFun = ({store}) => {
  return (
    <div>
      <p>you clicked {store.count} times</p>
      <button onClick={() => store.handleCount()}>Add</button>
    </div>
  );
}
export default inject('store')(observer(ComponentFun));