当前位置: 首页 > news >正文

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 = 0constructor() {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的那个,然后打开,即可查看里面存储的数据

 

 

http://www.lryc.cn/news/117036.html

相关文章:

  • 《HeadFirst设计模式(第二版)》第五章代码——单例模式
  • Linux: network: tools: tcpdump,抓取vlan包需要注意的事情;不然会出现LLC协议
  • 大数据离线阶段01:Apache Zookeeper
  • 数字孪生轨道交通,地铁视频孪生三维可视化管控平台
  • 自定义注解(Annontation)
  • 基于粒子群改进BP神经网络的血压评估系统,血压预警系统,pso-bp神经网络
  • Vue中引入外部css导致的全局污染
  • 【安装部署】Mysql下载及其安装的详细步骤
  • 如何循环执行windows和linux上的控制台指令
  • 【Shell】基础语法(三)
  • linux 服务开机自启
  • 【LeetCode】870 . 优势洗牌
  • 现代C++中的从头开始深度学习【2/8】:张量编程
  • uniapp软键盘谈起遮住输入框和头部被顶起的问题解决
  • 安防监控视频汇聚EasyCVR平台的FLV视频流在VLC中无法播放的原因排查
  • 虹科新闻 | 虹科与Power-MI正式建立合作伙伴关系
  • Xamarin.Android实现加载中的效果
  • Leetcode.1559 二维网格图中探测环
  • 阿拉伯数字转中文数字字符,最高支持千京
  • Python基础--序列操作/函数
  • Kafka与Zookeeper版本对应关系
  • Arch Linux 使用桥接模式上网
  • Vue 中使用 WebWorker
  • 财务管理系统javaweb会计账房进销存jsp源代码mysql
  • 企业服务器被devos勒索病毒攻击后怎么处理,devos勒索病毒如何攻击的
  • React源码解析18(2)------ FilberNode,FilberRootNode结构关系
  • 什么是Session?它在SQLAlchemy中扮演什么角色?
  • Java 中 Set集合常用方法
  • (MVC)SpringBoot+Mybatis+Mapper.xml
  • 【Linux命令行与Shell脚本编程】第十九章 正则表达式