中文文档: https://cn.mobx.js.org/

使用步骤

1、安装依赖

  • mobx 核心库
  • mobx-react 方便在react中使用mobx技术的库
  • @babel/plugin-proposal-decorators 让rn项目支持es7的装饰器语法的库

    1. yarn add mobx mobx-react @babel/plugin-proposal-decorators

    2、在 babel.config.js 添加以下配置

    1. plugins:{
    2. ['@babel/plugin-proposal-decorators',{'legacy':true }
    3. }

    3、新建文件 src/mobx/index.js 用来存放全局数据

    ```javascript import {observable,action} from “mobx”; class RootStore { // abservab1e 表示数据可监控 表示是全局数据 // 装饰器语法,增加功能 通过 Object.defineProperty 实现 @observable name=”hello”;

    // action行为表示changeName是个可以修改全局共享数据的方法 @action changeName(name){ this.name=name } }

export default new Rootstore();

  1. <a name="w9ERy"></a>
  2. ### 4、在根组件中挂载
  3. > 通过Provider来挂载和传递
  4. ```javascript
  5. import React,{Component} from 'react';
  6. import {View} from 'react-native';
  7. import rootStore from "./src/mobx";
  8. import {Provider} from "mobx-react";
  9. import Sub1 from './Sub1';
  10. class Index extends Component{
  11. //正常
  12. render(){
  13. return (
  14. <View>
  15. <Provider rootStore={rootStore} >
  16. <Sub1></Sub1>
  17. </Provider>
  18. </View>
  19. )
  20. }
  21. }

5、其他组件中使用

  1. import React, {Component} from 'react';
  2. import {View,Text} from 'react-native';
  3. import {inject,observer} from "mobx-react";
  4. @inject("rootStore") // 注入用来获取全局数据的 到 props 上
  5. @observer // 当全局发生改变了组件的重新渲染从而显示最新的数据
  6. class Subl extends Component {
  7. changeName =()=> {
  8. //修改全局数据
  9. this.props.rootStore.changeName(Date.now());
  10. }
  11. render(){
  12. console.log(this);
  13. return (
  14. <View><Text onPress={this.changeName}>{this.props.rootStore.name}</Text></View>
  15. )
  16. }
  17. }
  18. export default Index;