React中使用mobx管理状态数据使用样例

MobX 是一个身经百战的库,它通过运用透明的函数式响应编程(Transparent Functional Reactive Programming,TFRP)使状态管理变得简单和可扩展。官网地址:关于 MobX | MobX中文文档 | MobX中文网

安装依赖

mobx-react-lite是一个mobx和react建立链接的依赖库,也必须安装才可以使用

复制代码
yarn add mobx 


yarn add mobx-react-lite

创建一个或者多个store

并使用store/index.js统一管理,这样以后只需要使用统一的一种方式就可以了

CountStore.js:一个存储数据的store

复制代码
import { makeAutoObservable } from "mobx"


class CountStore {
  count = 0
  constructor() {
    makeAutoObservable(this)
  }

  addCount = () => {
    this.count++
  }
}


export default CountStore

统一管理的index.js:

复制代码
import CountStore from "./count";
import MyInfo from "./info";
import React from "react";

class Store {
  constructor() {
    this.countStore = new CountStore()
    this.myInfo = new MyInfo()
  }
}

// 使用context是为了让react识别到Store里面的mobx,不然react不认识Store
const rootStore = new Store()
const context = React.createContext(rootStore)
export const useStore = () => React.useContext(context)

在组建中使用

像使用hooks一样使用store,也可以使用解构赋值的形式,将countStore解构出来:

复制代码
import React from 'react'
import { useStore } from './store'
import { observer } from 'mobx-react-lite'

function App() {
    const { countStore, myInfo } = useStore()

    return (
        <div>
            <h2>APP组件</h2>
            <div className="count-box">
                count状态: {countStore.count}
                <button onClick={countStore.addCount}>+</button>
            </div>
            <div>
                myinfo状态: {myInfo.myCar.join('++')}
                myAge状态: {myInfo.FilterAge.join('||')}
                <button onClick={myInfo.addCar}>修改内容</button>
            </div>
        </div>
    )
}

export default observer(App)

使用效果

可以在React组建中调试查看数据,找到对应的组件,然后查看Hooks下Context属性,找到里面有store的那个,然后打开,即可查看里面存储的数据

相关推荐
人工智能训练2 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪3 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
2601_949593653 小时前
基础入门 React Native 鸿蒙跨平台开发:模拟智能音响
react native·react.js·harmonyos
xiaoqi9224 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233224 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88216 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas1366 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠6 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
珑墨6 小时前
【Turbo】使用介绍
前端
军军君017 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three