Mobx-basic(快速上手)莞式教程
Mobx-basic(快速上手)莞式教程
之前写过一篇redux的教程 可以参考redux的教程
本篇讲通过通俗易懂的方式让你快速上手mobx 的基本使用,虽然已经可以满足大部分开发中的需求但是详细 请参考中文官方文档
本篇配教程代码 https://github.com/Chad97/mobx-basic
如果对想要快速入门的你有所帮助请给点个小小的start吧~
概述
- 本篇采用的是mobx5 和react 16.8, 均才用最新版本库所做示范在有的API和其他版本可能有所差异,如严格模式
- 本篇纯属原创 转载请注明出处
我们先来简单的看下官网的介绍
MobX 是一个经过战火洗礼的库,它通过透明的函数响应式编程(transparently applying functional reactive programming - TFRP)使得状态管理变得简单和可扩展。MobX背后的哲学很简单:
其实你可以简单的理解成 mobx是一个excel的计算表格
你将要了解到:
observable, autorun, computed, action, configure —— mobx
observer —— mobx-react
准备工作
因为本篇通篇使用ES7中的修饰器语法@,所以需要配置bable,推荐使用
当然你也可以使用 decorators 为参考
安装
yarn add mobx mobx-react
启用修饰器 babel 支持ES7中的修饰器语法@
- yarn eject 打开配置
- 安装babel 依赖
yarn add babel-plugin-transform-decorators-legacy --dev
yarn add @babel/plugin-proposal-decorators
配置webpack
"babel": {"plugins": [["@babel/plugin-proposal-decorators",{"legacy": true}],["@babel/plugin-proposal-class-properties",{"loose": true}]],"presets": ["react-app"]}
start
实例化对象容器
在全局文件下创建一个state.js
ps 别问我为啥不叫store 因为我喜欢
如下
import { observable, autorun, computed, action, configure} from "mobx"
configure(true)//开启严格模式class MyState {@observable num1 = 0;@observable num2 = 100;@action addNum1 = () => {this.num1 ++;}@action addNum2 = () => {this.num2 ++;}@action empty = () => {this.num1 = 0this.num2 = 0}@computed get total() {return this.num1 + this.num2;}}const newState = new MyState();export default newState
- 我们可以看到 我们使用 observable 观察了 num1 和 num2
- 写了三个触发行为 action 分别是
addNum1 addNum2 empty
- 一个计算 computed
total
- 然后 实例化一个对象
newState
并且导出了
如果你用过redux 那这里对应你来说 简直不要太简单,只不过mobx 更加面向对象
组件中触发状态
创建 一个父组件 Mobx.jsx
import React from 'react';
import { observer } from 'mobx-react';import newState from './state'import AllNum from './child/AllNum'
import Main from './child/Main'@observer
class Mobx extends React.Component {constructor(props) {super(props);this.state = { };}render() {return (<> <AllNum store={newState} /><br /><hr /><Main store={newState} /><br /><hr /><button onClick={newState.empty}>清零</button></>);}
}export default Mobx;
- 我们可以看到这里导入了
newState
通过 empty 触发 action - 而子组件 通过 props把 newState 传递过去了
2个子组件
AllNum.jsx
import React from 'react';
import { observer } from "mobx-react"const AllNum = observer((props) => <div>num1 + num2 = {props.store.total}</div>);export default AllNum
Main.jsx
import React from 'react';
import { observer } from 'mobx-react';const Main = observer((props) => (<div><p>num1 = {props.store.num1}</p><p>num2 = {props.store.num2}</p><div><button style={{marginRight:'5em'}} onClick={props.store.addNum1}>num1 + 1</button><button onClick={props.store.addNum2}>num2 + 1</button></div></div>));export default Main
- props 接收 父组件传过来的
newState
当然如果你的组件签到太深,觉得 上面2中方式太麻烦你也可以使用 react Context
来传递 newState,这里就不多做概述,具体参考
运行机制
贴一张官方的图
可以发现 对比redux mobx 的方式人更容易理解是使用
面向对象的方式也让人用起来 不用写许多许多 render 感觉恶心
redux教程链接 https://blog.csdn.net/Chad97/article/details/89522403
最后 大家可以 clone 我的deom 教程作为参考哦~
https://github.com/Chad97/mobx-basic
喜欢的 大爷点个star 哦~
Mobx-basic(快速上手)莞式教程相关推荐
- P4 Tutorial 快速上手 (1) 教程库简介
P4 Tutorial 快速上手 (1) 教程库简介 提示:本系列仅适用于软件交换机BMv2 P4 Tutorial 快速上手系列 (2) 文章目录 P4 Tutorial 快速上手 (1) 教程库简 ...
- thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...
前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...
- xmind快速上手使用教程,提高工作效率
文章目录 1 xmind快捷键 1.1 文件 1.2 编辑 1.3 插入 1.4 查看 1.5 自定义快捷键 2 快速上手使用,创建一个好看的思维导图教程 3 使用xmind快速创建一个思维导图 1 ...
- smarty半小时快速上手入门教程
本文讲述了smarty快速上手入门的方法,可以让读者在半小时内快速掌握smarty的用法.分享给大家供大家参考.具体实现方法如下: 一.smarty的程序设计部分: 在smarty的模板设计部分我简单 ...
- git 32位_完整的GIT笔记 快速上手小白教程
GIT 是什么? Git 是目前世界上最先进的分布式版本控制系统.并且它是一个免费的.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 什么是版本控制系统 版本控制是一种系统,它跟踪一 ...
- html高德地图api使用教程,快速上手-入门-教程-地图 JS API | 高德地图API
按照「准备」篇完成页面准备工作之后就可以真正开始地图的开发工作了.本篇带您快速了解:地图.图层.点标记.矢量图形.信息窗体.事件的最基本使用方法. HELLO,AMAP! 简单创建一个地图只需要一行代 ...
- ansible入门快速上手使用教程
1 安装ansible centos安装: # yum -y install epel-release //更新本地安装库 # yum list all *ansible* //查看相应的版本 # y ...
- github上手实践教程
简介: SSH公私钥的使用 github的使用 git 工具的基本使用 基本步骤: 一.github的使用 1.github账号的创建[官网一步一步创建就行了,这一步骤省略] 2.创建远程仓库: 创建 ...
- Android测试solo,SoloPi支付宝开源的 Android 专项测试工具的介绍与快速上手
SoloPi支付宝开源的 Android 专项测试工具的介绍与快速上手 SoloPi:支付宝开源的 Android 专项测试工具的介绍与快速上手 MTSC2019大会上,Soloπ算是一次正式的在公众 ...
最新文章
- 磁珠,电感,零欧电阻之间的区别
- float占几个字节_一个HashMap对象占多少字节?
- EL之Bagging(DTR):利用Bagging对回归问题(实数值评分预测)建模(调2参)
- 一天搞定CSS:边框border--02
- Unshelve Instance 操作详解 - 每天5分钟玩转 OpenStack(39)
- 一个广为流传的关于项目管理的通俗讲解
- IT职场人生系列之十二:语言与技术I
- 为什么标签天线振子长度小于半个波长?
- dcp1608w电脑通过_dcp-1608打印机驱动程序
- 威联通 ※ 群晖 虚拟机性能对比 我可能要碰瓷 eSir
- 【计算机网络】数字签名和数字认证
- 【读】自动文摘——预备
- Excel vba按指定列号内容插入分页符
- Excel批量转置——录制会循环的宏
- Word里面怎么才能输入平方
- 网络重置后WLAN网络找不到怎么办?
- 非常实用的,国内十大另类行业网址导航站
- Dual Band Wireless-AC 3165无线驱动无法开启wifi
- 全球与中国医疗高温灭菌设备市场深度研究分析报告
- Hexo中添加音乐(列表)、视频的代码