Mobx-basic(快速上手)莞式教程

之前写过一篇redux的教程 可以参考redux的教程

本篇讲通过通俗易懂的方式让你快速上手mobx 的基本使用,虽然已经可以满足大部分开发中的需求但是详细 请参考中文官方文档

本篇配教程代码 https://github.com/Chad97/mobx-basic

如果对想要快速入门的你有所帮助请给点个小小的start吧~

概述

  1. 本篇采用的是mobx5 和react 16.8, 均才用最新版本库所做示范在有的API和其他版本可能有所差异,如严格模式
  2. 本篇纯属原创 转载请注明出处

我们先来简单的看下官网的介绍

MobX 是一个经过战火洗礼的库,它通过透明的函数响应式编程(transparently applying functional reactive programming - TFRP)使得状态管理变得简单和可扩展。MobX背后的哲学很简单:

其实你可以简单的理解成 mobx是一个excel的计算表格

你将要了解到:

observable, autorun, computed, action, configure —— mobx
observer —— mobx-react

准备工作

因为本篇通篇使用ES7中的修饰器语法@,所以需要配置bable,推荐使用
当然你也可以使用 decorators 为参考

  1. 安装 yarn add mobx mobx-react

  2. 启用修饰器 babel 支持ES7中的修饰器语法@

    • yarn eject 打开配置
    • 安装babel 依赖
      yarn add babel-plugin-transform-decorators-legacy --dev
      yarn add @babel/plugin-proposal-decorators
  3. 配置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(快速上手)莞式教程相关推荐

  1. P4 Tutorial 快速上手 (1) 教程库简介

    P4 Tutorial 快速上手 (1) 教程库简介 提示:本系列仅适用于软件交换机BMv2 P4 Tutorial 快速上手系列 (2) 文章目录 P4 Tutorial 快速上手 (1) 教程库简 ...

  2. thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...

    前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...

  3. xmind快速上手使用教程,提高工作效率

    文章目录 1 xmind快捷键 1.1 文件 1.2 编辑 1.3 插入 1.4 查看 1.5 自定义快捷键 2 快速上手使用,创建一个好看的思维导图教程 3 使用xmind快速创建一个思维导图 1 ...

  4. smarty半小时快速上手入门教程

    本文讲述了smarty快速上手入门的方法,可以让读者在半小时内快速掌握smarty的用法.分享给大家供大家参考.具体实现方法如下: 一.smarty的程序设计部分: 在smarty的模板设计部分我简单 ...

  5. git 32位_完整的GIT笔记 快速上手小白教程

    GIT 是什么? Git 是目前世界上最先进的分布式版本控制系统.并且它是一个免费的.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 什么是版本控制系统 版本控制是一种系统,它跟踪一 ...

  6. html高德地图api使用教程,快速上手-入门-教程-地图 JS API | 高德地图API

    按照「准备」篇完成页面准备工作之后就可以真正开始地图的开发工作了.本篇带您快速了解:地图.图层.点标记.矢量图形.信息窗体.事件的最基本使用方法. HELLO,AMAP! 简单创建一个地图只需要一行代 ...

  7. ansible入门快速上手使用教程

    1 安装ansible centos安装: # yum -y install epel-release //更新本地安装库 # yum list all *ansible* //查看相应的版本 # y ...

  8. github上手实践教程

    简介: SSH公私钥的使用 github的使用 git 工具的基本使用 基本步骤: 一.github的使用 1.github账号的创建[官网一步一步创建就行了,这一步骤省略] 2.创建远程仓库: 创建 ...

  9. Android测试solo,SoloPi支付宝开源的 Android 专项测试工具的介绍与快速上手

    SoloPi支付宝开源的 Android 专项测试工具的介绍与快速上手 SoloPi:支付宝开源的 Android 专项测试工具的介绍与快速上手 MTSC2019大会上,Soloπ算是一次正式的在公众 ...

最新文章

  1. 磁珠,电感,零欧电阻之间的区别
  2. float占几个字节_一个HashMap对象占多少字节?
  3. EL之Bagging(DTR):利用Bagging对回归问题(实数值评分预测)建模(调2参)
  4. 一天搞定CSS:边框border--02
  5. Unshelve Instance 操作详解 - 每天5分钟玩转 OpenStack(39)
  6. 一个广为流传的关于项目管理的通俗讲解
  7. IT职场人生系列之十二:语言与技术I
  8. 为什么标签天线振子长度小于半个波长?
  9. dcp1608w电脑通过_dcp-1608打印机驱动程序
  10. 威联通 ※ 群晖 虚拟机性能对比 我可能要碰瓷 eSir
  11. 【计算机网络】数字签名和数字认证
  12. 【读】自动文摘——预备
  13. Excel vba按指定列号内容插入分页符
  14. Excel批量转置——录制会循环的宏
  15. Word里面怎么才能输入平方
  16. 网络重置后WLAN网络找不到怎么办?
  17. 非常实用的,国内十大另类行业网址导航站
  18. Dual Band Wireless-AC 3165无线驱动无法开启wifi
  19. 全球与中国医疗高温灭菌设备市场深度研究分析报告
  20. Hexo中添加音乐(列表)、视频的代码

热门文章

  1. strong_alias、weak_alias
  2. 蓝桥杯第十一届真题:八次求和
  3. 基于北斗卫星差分定位技术的输电线路弧垂监测
  4. java去除html代码中含有的html、js、css标签,获取文字内容
  5. Tmail2000研究--Demo不能发送Email的Bug
  6. windows快捷键+组合键+搜索命令
  7. 操作系统真象还原实验记录之实验十二:实现ASSERT
  8. 如何用手机预览PS、XD、sketch的设计稿
  9. 金融情感分析,股市预测(二)
  10. Android 高质量开发之崩溃优化,2020-2021字节跳动Android面试真题解析