React中如何使用Mobx

news2024/10/10 6:22:31

一、Mobx前端状态管理框架 基础概念?

1. 什么是Mobx

Mobx是一个简单、可扩展的状态管理库

2. 什么是状态管理?

状态管理就是将分布在各个组件、各个模块中的状态的变化,按照一定的规则,进行统一的管理。

3. 为什么需要状态管理?

随着组件数量的增加、系统的结构越来越复杂。各大前端框架(React、Vue)提供的单向数据流的运转方式,已经不能满足复杂系统的需求。

。跨层次组件的数据共享
。兄弟组件的数据共享
。数据状态的所有变化无法方便追溯

状态管理的一般思想(Flux)

Flux的核心思想就是数据和逻辑永远单向流动。

Flux中的数据单向和React中的单向数据流有所不同,React中的单向数据流是指的组件间通信的数据流向只能是从父组件->子组件的这样一种形式。而Flux思想中的单向数据流,指的是在应用程序中,数据变化的过程和方向是单向的。

不难发现,Flux其实是提供了一个数据中心化控制的方案。每个数据的变化都是在“动作”中去触发。Flux架构的特点主要是组件内部不包含状态,所有状态放到Store中统一管理,通过监听Action来具体执行操作,这样的好处在于:

。视图组件不包含状态,很纯粹,只包含了渲染逻辑和触发 action 这两个职责。
。通过Action即可方便追溯Store的所有变化
。由于是中心化的数据管理,也就不存在兄弟/跨层级组件数据共享问题
市面上也有很多基于Flux的实现,如Redux,Vuex等。

有哪些常见的实现?

Redux
Mobx
Vuex
Context (React Hook)

二、mobx的用法

1. 安装 mobx

npm install mobx -S

2. 安装 mobx 与 react 关联工具

npm install mobx-react -S

3. 安装两个插件,以支持 ES6 的 mobx 语法

npm install @babel/plugin-proposal-decorators -D
npm install @babel/plugin-proposal-class-properties -D

4. 在 package.json 中配置上述两个插件

"babel": [
  "plugins": [
	[
	  "@babel/plugin-proposal-decorators",
	  {
		"legacy": true
	  }
    ],
    [
	  "@babel/plugin-proposal-class-properties",
	  {
		"loose": true
	  }
    ]
  ]
]

5. ESLint 配置

"eslintConfig": {
  "parserOptions": {
	"ecmaFeatures": {
	  "legacyDecorators": true
	}
  }
}

6. 相关语法

。@observable:定义 state
。@computed:定义一个方法,当依赖的 state 发生改变时,自动重新计算,自动地将最新的结果渲染至调用的地方
。@action:定义操作 state 的方法

7. 页面结构

在这里插入图片描述
封装store下的index文件
在这里插入图片描述
homeStore.js封装内容:
在这里插入图片描述
home页面封装内容
在这里插入图片描述
参考链接地址:
。https://blog.csdn.net/qq_44647809/article/details/123797408
。https://www.wddsss.com/main/displayArticle/350
。https://blog.csdn.net/weixin_43834567/article/details/118414211

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NX二开ufun函数创建块/基准平面/凸台/垫块/腔体

本节主要讲述通过ufun函数直接创建块、基准平面、凸台、垫块、腔体,涉及ufun函数如下: 1、创建块 UF_MODL_create_block 2、创建基准平面 UF_MODL_create_fixed_dplane 3、创建凸台 UF_MODL_create_boss 4、创建垫块 UF_MODL_create_rect_pad5 5、创…

聊聊如何成为更好的架构师?

之前有小伙伴咨询架构方向需要学习什么,需要什么技术储备,今天就来深入聊聊这个话题。 就此探讨下必备技能、经验,以及储备相关知识所需的时间和精力。除此之外,我也回顾了自己走过的路、使用或尝试过的技术,以及我从…

开学季,送什么给小学生实用?学生最实用的护眼好物

伴随着“立春”,又到新的春季开学季,不管是家长还是孩子面对每个学期的循环,每一次都有新的故事和发现,很快就要开学了,给学生的小礼物准备好了吗,作为父母、长辈送给孩子最好的礼物,我认为莫过…

大数据舆情分析软件实时监控,TOOM大数据处理与舆情监控简介

舆情数据分析处理是指通过使用大数据技术、人工智能、自然语言处理等,从舆情数据中提取信息,进行模型建立、模式识别、情感分析等,从而了解舆论情况。舆情数据分析处理的目的是了解舆论趋势、话题热点、网民情绪等,从而便于企业、…

中国电子学会2022年03月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

分数:100 题数:24 一、单选题(共10题,共30分) 1. 由1,2,3,4,5,0这六个数字经过排列组合能够组成多少个六位数偶数?注意:每一位都不相同,最高位不能为0。( ) A. 720 B. 360 C. …

动态规划Dynamic Programming的基础解法

本文是对Jeff Erickson经典算法入门书籍《Algorithms》中动态规划问题的阅读笔记,近期在刷一些编程题,对于如何凑出动态规划更新的范式,脑袋里一直是一团乱麻,特别看完了别人的题解,只是惊叹其脑洞,但一直搞…

分页数据渲染

SearchResult属性增加 增加属性 private List<Integer> pageNavs; 目的&#xff1a;产生分页效果&#xff0c;方便操作&#xff0c;navs记录了从1到总页数的暑假 不是第一页时显示上一页 <a class"page_a" th:attr"pn${result.pageNum - 1}" hre…

算法基础集训(第30天)------>DFS之经典【n皇后问题】

一&#xff1a;概念定义n−皇后问题是指将 n个皇后放在 nn的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。二&#xff1a;题目描述n−皇后问题是指将 n个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇…

【C++入门】函数重载

目  录1 函数重载概念2 C支持函数重载的原理 -- 名字修饰&#xff08;name Mangling&#xff09;1 函数重载概念 函数重载&#xff1a; 函数的一种特殊情况&#xff0c;C允许在同一作用域中声明几个功能类似的同名函数&#xff0c;这些同名函数的形参列表&#xff08;参数个数…

企企通入选「AI中国」机器之心“最具商业价值解决方案 TOP 30” 榜单

近日&#xff0c;由专业的人工智能信息服务平台机器之心&#xff0c;发起并评选的「AI 中国」机器之心2022 年度评选榜单正式公布&#xff0c;企企通凭借过去一年在采购供应链领域取得的成就&#xff0c;以及在技术、产品、服务能力方面具备的独特优势&#xff0c;从众多企业中…

Python连接Liunx中mysql数据库-三表查询【10个经典案例】

关于Python连接liunx中mysql数据库的方式在这一篇文章 Python连接Liunx中mysql数据库-保姆级教程 关于Python针对liunx中的mysql数据库进行增删改查操作的文章在这一篇可以看一下 Python连接Liunx中mysql数据库-增删改查 对于单表查询的学习可以看这一篇文章 Python对liunx中my…

使用.ibd文件恢复Mysql数据库数据

使用.ibd文件恢复Mysql数据库数据问题发现问题解决第一步&#xff1a;查找mysql数据目录第二步&#xff1a;创建表第三步&#xff1a;解除表空间第四步&#xff1a;复制原数据库.ibd文件第五步&#xff1a;导入表空间ERROR 1030 (HY000): Got error 194 “Tablespace is missin…

使用Navicat生成MySQL测试数据

使用Navicat生成MySQL测试数据 Navicat版本&#xff1a;16.1.3 场景&#xff1a;因为某些原因&#xff0c;本人负责项目的数据库需要从MySQL迁移到PostgreSQL&#xff0c;所以就想测试一下PostgreSQL数据库的分区表性能。测性能的话大概需要两千万的测试数据&#xff0c;从生…

蓝队--Linux基线安全检查

文章目录认证账号和口令安全创建用户用户安全基线授权文件系统安全审计日志安全日志存放的位置设备等级观察一条日志产生的过程网络安全网络协议与服务安全SSH的配置防火墙安全操作系统SELinux登陆安全kali忘记密码怎么办怎么物理加密进入BOIS界面选择Security选择set User Pas…

【前端】css样式视口、布局

一、 视口概念 视口&#xff08;viewport&#xff09;是用来约束网页中最顶级块元素的&#xff0c;即它决定了网页的大小&#xff0c;网页是先在视口上渲染&#xff0c;然后再通过视口放回到浏览器窗口上的&#xff0c;网页的渲染过程如下&#xff1a; pc端视口的大小和浏览器…

Python---类与对象

专栏&#xff1a;python 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;本专栏主要更新一些python的基础知识&#xff0c;也会实现一些小游戏和通讯录&#xff0c;学时管理系统之类的&#xff0c;有兴趣的朋友可以关注一下。 类与对象前言定义类创建对象前言 面向对象跟函…

河北如何推进农村生活污水处理?

自“十四五”以来&#xff0c;我国各地都针对地方农村人居环境的改善颁布相关方案&#xff0c;力图改善农村生活污水处理这一自本世纪初就始终困扰我国广大农村居民的难题。今天&#xff0c;小编就为大家介绍一下&#xff0c;湖北省针对农村污水处理所采取的最新措施。 河北地…

统计图表有哪几个种类及其特点

关于数据分析中常用统计图表的分类和各种图表的特点&#xff0c;这一张图就能概括&#xff01; 下面来展开说下&#xff0c;为了直观展示&#xff0c;给大家找了一份可视化统计图表的模板&#xff0c;可直接在线使用&#xff0c;需要的小伙伴自取哈。 点此领取模板>>htt…

端口映射和端口转发

文章目录端口转发定义端口映射的定义端口转发简介常见转发工具LCX1、目标机有公网lP2、端口映射3、目标机无公网IP端口转发和端口映射都是为了解决内网主机的端口无法在外部直接访问而衍生出来的技术&#xff0c;通过中间服务器进行中转&#xff0c;将内部的端口映射到公网IP上…

【AI-NLP】Transformer理论及源码理解

文章目录提出背景总体结构EncoderDecoder细节再探源码阅读主函数部分主模型定义编码器编码层多头自注意力层前馈神经网络层Masked解码器解码层参考资料提出背景 改进了RNN的训练慢的缺点&#xff0c;利用self-attention机制实现并行计算。并且Transformer可以增加到非常深的深…