react mobx 用法

一. 安装mobx

  1. yarn add mobx
  2. yarn add mobx-react-lite

二. 创建一个mobx文件夹统一管理项目所有的数据

三. 在mobx文件夹里创建一个index.js 统一管理

import React, { useContext } from "react";
import DemoStore from "./DemoStore";
class RootStore {
  constructor() {
    this.demoStore = DemoStore;
    //如果还有其他文件,依照上面引入即可
  }
}
const rootStore = new RootStore()
const context = React.createContext(rootStore)
const useMobStore = () => useContext(context)
export {useMobStore};

四. 创建DemoStore.js 文件

import { makeAutoObservable, toJS } from 'mobx';
class DemoStoreData{
	number: 1; // 数据
	constructor() {
	   makeAutoObservable(this)
	}
	// 更新数据(此方法可以是异步的,可以在里面调完接口在更新数据)
	updateNumber = (data) =>{
		this.number = data;
	}
}
const DemoStore = new DemoStoreData()
export default DemoStore;

五. 使用

// 导入的是 三 步骤 创建的index.js 文件
import { useMobStore } from "./mobx/index.js"; 
import { observer } from "mobx-react-lite";

const PageList = () => {
	// 解构的是 三 步骤里的 demoStore 
	const { demoStore } = useMobStore();
	return (
		<div>
			{demoStore.number}
		</div>
	)
}
export default observer(PageList);

六. 注意

如果组件想使用React.memo() 进行性能优化
在优化的那个组件不要有任何mobx相关的数据和方法
因为memo函数里的旧值和新值,只能监听到通过redux 或者 组件传递的值,mobx传递的值无法进行监听。
目前我采用的方法是 最后一层优化的组件 通过数据传递的方式进行。(如有优化的方式欢迎评论告知,万分感谢!!!)

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ReactMobx是一对非常强大的组合,可以通过它们来构建可扩展和可维护的应用程序。 首先,你需要安装mobxmobx-react库。你可以使用npm命令来安装它们:`npm install mobx mobx-react --save`。 接下来,你需要在你的React组件中引入mobx-react的`observer`方法。你可以使用import语句来引入:`import { observer } from "mobx-react";`。 一旦你引入了`observer`方法,你就可以将它应用到你的React组件上,这样组件就能够观察mobx的状态变化并自动更新视图。你只需要在组件的定义前加上`@observer`装饰器即可。 通过将mobx的状态存储在store中,你可以在组件中使用mobx提供的装饰器和函数来访问和修改状态。当状态发生变化时,mobx会自动更新组件的视图。 ReactMobx的配合使得你可以轻松地管理和响应应用程序的状态变化。你可以使用mobx的观察者模式来追踪状态的变化,并在需要的时候自动更新组件的视图。 总结起来,ReactMobx的配合是一种非常强大的方式,可以帮助你构建可扩展和可维护的应用程序。你可以使用mobx来管理状态,并使用mobx-react来观察状态的变化并更新组件的视图。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [React + MobX 快速上手](https://blog.csdn.net/weixin_42333548/article/details/107812048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [一篇文章让你认识ReactMobx!](https://blog.csdn.net/dyyay521/article/details/125525061)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值