MobX

mobx

MobX是一个经过实战测试的库,它通过透明地应用功能反应式编程(TFRP)使状态管理变得简单和可扩展,是一个类组件 通过@修饰一个组件。

步骤

1.下包
2.需要导出 npm run eject
3.再package.json里配置babel,支持装饰器语法
4.和react和语法差不多 需要provider进行
@abservable 模块的数据
@action 模块的行为
@connect

注意事项

  1. 需要下载三个包
    “babel-plugin-transform-decorators-legacy”: “^1.3.5”, 支持装饰器
    “mobx”: “^5.7.0”, 支持mobx
    “mobx-react”: “^5.4.2” 支持合react集成
  2. 导出webapck配置
    npm run eject
  3. 再package.json里配置babel,支持装饰器语法
    “babel”: {
    “presets”: [
    “react-app”
    ],
    “plugins”: [
    ["@babel/plugin-proposal-decorators", { “legacy”: true }]
    ]
    }

代码展示

新建一个仓库 store /modules->count.js
count.js
import {observable, action} from 'mobx'

export default class Count{
    // 模块的数据
    @observable count = 100;

    // 模块的行为
    @action changeCount(type){
        type==='+'?this.count++: this.count--
    }
}

store里的index.js
// 加载子模块count
import Count from './modules/count';

// 引入日志
import {autorun} from 'mobx';

let count = new Count();

autorun(()=>{
    console.log('count change...', count.count);
})

export default {
    count
}

App.js
import React from 'react';
import './App.css';
import {inject, observer} from 'mobx-react'

@inject('count')
@observer
class App extends React.Component{
  
  render(){
    console.log('this.props...', this.props);
    return <div>
      <button onClick={()=>this.props.count.changeCount('+')}>+</button>
      <p>{this.props.count.count}</p>
      <button onClick={()=>this.props.count.changeCount('-')}>-</button>
    </div>
  }
}

export default App;
 
modx里的index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';

// 引入Provider注入mobx数据
import {Provider} from 'mobx-react'
// 引入mobx的store
import store from './store'

ReactDOM.render(<Provider {...store}><App /></Provider>, document.getElementById('root'));

仅供参考!

### MobX 的使用方法 MobX 是一种状态管理工具,其核心理念是自动化的全局状态管理。通过观察数据的变化并触发相应的视图更新,开发者无需手动处理复杂的依赖关系。 #### 安装 MobX 要开始使用 MobX,首先需要安装它以及相关的开发环境支持包: ```bash npm install mobx mobx-react ``` 如果计划在项目中使用 MobX JSX 功能,则还需要配置 Babel 插件来解析装饰器语法[^2]。 #### 基本概念 以下是 MobX 的几个重要概念: - **Observable**: 可被观察的数据源。 - **Observer**: 对应于 React 组件中的 `observer` 高阶组件或钩子函数。 - **Action**: 修改 observable 数据的方法。 - **Reaction**: 当某些数据变化时执行特定逻辑的功能。 #### 示例代码 下面是一个简单的例子展示如何利用 MobX 进行状态管理和响应式 UI 更新: ```javascript import { makeObservable, observable, action } from 'mobx'; import { observer } from 'mobx-react'; // 创建一个 Store 类型对象用于保存应用程序的状态 class CounterStore { count = 0; constructor() { makeObservable(this, { count: observable, increment: action, decrement: action }); } increment() { this.count += 1; } decrement() { this.count -= 1; } } const counterStore = new CounterStore(); // 使用 Observer 来创建能够感知 store 状态改变的 React 组件 const CounterComponent = observer(() => ( <div> <span>Count: {counterStore.count}</span><br /> <button onClick={() => counterStore.increment()}> Increment </button> {' '} <button onClick={() => counterStore.decrement()}> Decrement </button> </div> )); export default CounterComponent; ``` 上述代码定义了一个计数器应用,其中包含了增加和减少操作按钮,并展示了当前数值。每当点击这些按钮时,store 中的 `count` 属性会相应地增减,而界面也会随之实时刷新显示新的值[^1]。 对于更复杂的应用场景,可以参考官方提供的真实世界案例——react-mobx-realworld-example-app[^3],该项目实现了完整的 CRUD 操作流程演示,非常适合深入学习 MobX 在实际生产环境中是如何工作的。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值