参考博客:

http://www.jianshu.com/p/505d9d9fe36a    这是我看的学习Mobx目前为止觉得最详细学习的博客了.

下面只是记录下我的学习和一些简单的使用:

需要引入的库:

"mobx": "^3.1.16",
"mobx-react": "^4.2.2",
"mobx-react-devtools": "^4.2.15",

一.计数器的Mobx实现 :

AppState.js实现:这里主要是监听属性变化.

import { observable,computed,autorun,action,useStrict } from 'mobx';

// useStrict(true);//这里用到了严格模式,在修改类的成员属性的时候函数前面需要加上 @action

class AppState {

    @observable timer = ;

    // 注意这里不能调用super(props),否则报错
constructor(props) {
// 一秒递增
setInterval(()=>{
this.timer += ;
}, );
} // 重置计数器
resetTimer() {
this.timer = ;
}
} export default AppState;

模块使用:

/**
* Created by 思思 on 17/5/7.
*/
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
TouchableOpacity
} from 'react-native'; import Color from './../../../Config/Color';
import AppState from './../../../Mobx/AppState';
import { observer } from 'mobx-react'; // 实例化,这里当然也可以在AppState导出组件时进行new
const APPState= new AppState(); // 这里必须要写的,不然不能监听值的变化
@observer export default class extends Component { static navigationOptions = ({navigation,screenProps}) => ({
headerTitle: 'Mobx学习',
headerTitleStyle: {
color: 'white',
alignSelf: 'center' // 设置安卓端导航栏标题不居中显示
},
headerStyle: {
backgroundColor: Color.kMainColor // 设置导航栏的背景颜色,headerTintColor设置无效
},
}); render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
计数器的一个Mobx例子
</Text>
<View style={{flexDirection: 'row', justifyContent: 'space-around', marginTop: }}>
<Text>
当前的值是: {APPState.timer}
</Text>
<TouchableOpacity onPress={()=>{this.onReset()}}>
<Text style={{backgroundColor: 'green', color: 'white', marginLeft: , fontSize: }}>
重置
</Text>
</TouchableOpacity>
</View>
</View>
);
} // 重置
onReset() {
APPState.resetTimer();
}
} const styles = StyleSheet.create({
container: {
flex: ,
// justifyContent: 'center',
backgroundColor: 'white',
alignItems: 'center'
},
welcome: {
marginTop: ,
fontSize: ,
}
});

二.总结:

1> State状态:

state即数据,包括从服务端获取的数据,本地控制组件状态的数据.

2> @Action:

action就是改变state的代码。action就像是一个用户在单元格里输入一个新值。

明确定义你的action,这可以让你的代码结构更加清晰。在严格模式下,修改state的函数如果没有包裹在actions内,Mobx就不会执行state的修改操作。

换句话说,就是修改state的函数最好包裹在action内,这样可以让你清楚的知道什么地方是在修改状态,方便维护和调试。

3> 常用关键字:<暂时只了解和学习了这些>

@observale 修饰器或者 observable 函数让对象可以被追踪,用来观测一个数据,这个数据可以数字、字符串、数组、对象等类型;
@computed 修饰器创造了自动运算的表达式;
@autorun 函数让依靠 observable 的函数自动执行,当观测到的数据发生变化的时候,如果变化的值处在autorun中,那么autorun就会自动执行.这个用来写 log,发请求很不错;
@observer 修饰器让React Native组件自动起来,它会自动更新,即便是在一个很大的程序里也会工作的很好;需要注意的是如果组件采用封装,子组件也需要@observer

使用MobX的要领:

1.定义你的状态并让它变为可观察的;

2.创建能响应状态变化的视图;

3.修改状态.

Mobx想要入门上手可以说非常简单,只需要记住少量概念并可以完成许多基础业务了。但深入学习下去,也还是要接触许多概念的。例如Modifier、Transation等等。
貌似觉得还是比Redux方便简单.

Mobx实现计数器Demo:

https://github.com/PengSiSi/PSMeiTuan/blob/master/Component/Sections/Setting/Demos/MobxDemo.js

Mobx实现购物车Demo:

https://github.com/PengSiSi/PSMeiTuan/blob/master/Component/Sections/Setting/Demos/CartMobxDemo.js

因为这些是在自己学习练手的一个"仿美团"的项目中写的Demo,感兴趣的也可以clone这个项目,里面的注释和知识对于初学者还是蛮不错的,以后项目中用到的知识和自己学习的知识也会在里面,持续更新哟!!!

gitHub: https://github.com/PengSiSi/PSMeiTuan

欢迎加QQ,一起交流学习哟  : 1299625033 彭思

React Native使用Mobx总结的更多相关文章

  1. React Native中Mobx的使用

    从今天开始我们来搞搞状态管理可否,这几天没怎么写博客,因为被病魔战胜了,tmd,突然的降温让我不知所措,大家最近注意安全,毕竟年底了,查的严,呸,大家注意保暖 特别声明:写该文只是写一下用MobX的思 ...

  2. react native使用 mobx , can't find variable:Symbol

    原因是因为 mobx的版本用的最新版本..用到了 Symbol部分es6的api特性. 解决问题办法 1. 把mobx降版本到 4.3.1 . mobx-react降版本到 5.1.0 即可. 或者 ...

  3. react native 添加mobx

    "babel-plugin-transform-decorators-legacy": "^1.3.5", "babel-preset-react-n ...

  4. React-Native(六):React Native完整的demo项目

    该项目在http://www.lcode.org/study-react-native-opensource-two/上发现 更有意思的发现这个网站https://juejin.im/是采用vue.j ...

  5. React Native中的约束规范

    参考资料:https://github.com/sunyardTime/React-Native-CodeStyle 感谢情书哥无私奉献 ##一.编程规约 ###(一) 命名规约 [强制] 代码中命名 ...

  6. React Native 混合开发与实现

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 随着 React 的盛行,其移动开发框架 React Native 也收到了广大开发者的青睐,以下简 ...

  7. React、React Native面试题

    1.React Native相对于原生的ios和Android有哪些优势. react native一套代码可以开发出跨平台app, 减少了人力.节省了时间.避免了 iOS 与 Android 版本发 ...

  8. React Native 开发豆瓣评分(三)集成 Redux

    什么是 redux redux 是一个用于管理 js 应用状态(state)的容器.比如组件 A 发生了变化,组件 B 要同时做出响应.常见的应用场景就是用户的登录退出操作:未登录状态,个人中心显示登 ...

  9. 基于React Native的跨三端应用架构实践

    作者|陈子涵 编辑|覃云 “一次编写, 到处运行”(Write once, run anywhere ) 是很多前端团队孜孜以求的目标.实现这个目标,不但能以最快的速度,将应用推广到各个渠道,而且还能 ...

随机推荐

  1. centos6 mini安装图形界面,并vnc远程控制

    1.安装图形界面sudo yum groupinstall basic-desktop desktop-platform x11 fonts 2.安装vnc服务sudo yum -y install ...

  2. Vue学习日记(三)——Vue路由管理vue-router

    前言 为了给读者更好的体验,去理解vue-router和下一篇介绍vuex,决定还是来一个实战教程来带大家更加的去深入理解vue-router,在这之前,读者先自行了解和去官网下载npm和node,附 ...

  3. Codeforces Round #590 (Div. 3) C. Pipes

    链接: https://codeforces.com/contest/1234/problem/C 题意: You are given a system of pipes. It consists o ...

  4. POI读取格式化后的单元格数据

    public static String getFormattedValue(Cell cell) { FormulaEvaluator evaluator = cell.getSheet().get ...

  5. OFDM留空中央直流子载波目的及原理

    目的: 降低峰均比! 原理: IDFT公式: 直流分量k接近0,公式近似于对X(k)进行累加,因此直流分量会产生较大的信号能量,造成严重的峰均比. 详细内容可参考: https://dwz.cn/Zl ...

  6. Rapid Object Detection using a Boosted Cascade of Simple Features 部分翻译

    Rapid ObjectDetection using a Boosted Cascade of Simple Features 使用简单特征级联分类器的快速目标检测 注:部分翻译不准处以红色字体给出 ...

  7. Ubuntu 出现 Invalid operation update 或 Invalid operation upgrade的解决办法

    输入 sudo apt update && sudo apt full-upgrade

  8. 【集训队作业2018】line

    DP方程十分简单,考虑前对后贡献即可. \(f_i = \min_{l_i \leq j < i} \left\{ f_j + \left(\max_{j < k \leq i} \lef ...

  9. 数据结构实验之链表二:逆序建立链表(SDUT 2117)

    题目链接 #include <bits/stdc++.h> using namespace std; struct node { int data; struct node *next; ...

  10. Python面试题: 判断IP地址是否合法

    题目: 给出一个字符串, 判断其是否是是合法的IP(IPv4)地址 思路 将字符串按"."分割成4段得到一个列表 逐个判断列表中的字符串是否数字格式并且在0~255之间, 是在新列 ...