MOBX在项目开发中的具体使用
来源:互联网 发布:js图片轮播思路 编辑:程序博客网 时间:2024/06/07 15:18
一、MOBX
的认识
- 1、
mobx
是react
或者reactNative
开发过程中进行状态管理的一个状态机,类似redux
和vuex
一样的,中文官方文档,相对于redux
或者vuex
简单直白,mobx
使用的是ES7
的装饰器,因此需要配置下。 - 2、所谓的状态机,不管是
redux
、mobx
、vuex
都是采用观察者模式来开发的,可以简单的把状态机(状态)理解为项目中的全局变量,只是这个全局变量采用指定的方式方法才能获取与修改。 - 3、状态机存储在浏览器的内存中,类似浏览器自带的
sessionStore
的存储方式存在。
二、环境的配置
- 1、使用
create-react-app
构建一个项目,传送门 2、配置
.babelrc
支持ES7
的语法,更多信息请参考1、安装包
npm run eject # 运行命令npm install babel-preset-stage-2 --save-devnpm install babel-preset-react-native-stage-0 --save-devnpm install --save mobx mobx-react
2、配置
.babelrc
{ "presets": ["react-native-stage-0/decorator-support"]}
三、简单的使用一个状态
1、定义状态
import { observable, action } from 'mobx';// 定义一个观察的对象let appState = observable({ timer: 10})// 定义action(动作)appState.resetTimer = action(() => { appState.timer = 0;}); export default appState;
2、通过属性传递到子组件中
<div> <MobxTest appState={appState}/></div>
3、在组件中直接可以通过
props
获取到属性与方法
四、在大型项目中定义多个状态
- 1、单独创建一个目录存放项目中所有的状态(一般取名
store
) 2、定义第一个状态
import { observable, action } from "mobx";export default class Timer { @observable mytimer = { timer: 10 }; @action resetTime() { console.log("hello word"); this.mytimer.timer = 0; }}
3、定义第二个状态
import { observable, computed, action } from "mobx";class OrderLine { @observable price = 0; @observable amount = 1; // 计算属性 @computed get total() { return this.price * this.amount; } @observable length = 2; @computed get squared() { return this.length * this.length; } set squared(value) { // 这是一个自己的动作,不需要注解 this.length = Math.pow(2, value); } @action.bound resize() { this.price++; }}export default OrderLine;
4、在
index.js
中汇总import OrderLine from "./OrderLine";import Timer from "./timer";class Stores { constructor() { this.orderLine = new OrderLine(); this.timer = new Timer(); }}export default new Stores();
5、类似
redux
,MOBX
也有mobx-react
实现mobx
与react
的链接(直接在根组件中使用)import React, { Component } from "react";import MobxTest from "./components/MobxTest01";import stores from "./store/";import { Provider } from "mobx-react";class App extends Component { render() { const { ...storesArray } = stores; return ( <Provider {...storesArray}> <MobxTest /> </Provider> ); }}export default App;
6、在别的组件中使用注解的方式使用
说明,注解中使用的是在汇总中实例的对象,这样就实现了观察需要观察的,不想观察的就不观察
import React, { Component } from "react";// 引入观察者import { observer, inject } from "mobx-react";import { observable } from "mobx";@inject("orderLine")@observerexport class MobxTest extends Component { @observable secondsPassed = 0; constructor(props) { super(props); this.state = {}; } render() { console.log(this.props); console.log(this.props.orderLine.amount); return ( <div> <p>{this.props.orderLine.total}</p> <p>{this.secondsPassed}</p> <button onClick={this.onReset.bind(this)}>按钮</button> </div> ); } componentWillReact() { console.log("componentWillReact方法"); } componentWillMount() { console.log("componentWillMount方法"); } onReset() { this.props.orderLine.resize(); }}export default MobxTest;
五、代码下载
欢迎加入群聊,我们一起探讨前端技术栈
群号:560285778
阅读全文
0 0
- MOBX在项目开发中的具体使用
- Mobx在ReactNative中的使用
- Mobx在ReactNative中的使用
- mobx 在ReactJS项目中的运用
- MobX 在 React Native开发中的应用
- 使用 MobX 集成React Native 应用开发
- 使用 MobX 开发 React Native 应用
- java在具体项目中的优势
- Redis在项目中的具体运用
- Android开发规范(具体项目中的)
- maven profile具体项目中的使用
- SVN 在项目开发中的使用
- GreenDao在Android项目开发中的使用
- git分支在开发项目中的使用
- IOS总结_#define宏定义在IOS开发中的具体使用
- IOS总结_#define宏定义在IOS开发中的具体使用
- Mobx使用教程
- Mobx使用详解
- 计算圆的周长和面积
- PostgreSQL转换为Mysql
- myeclipse maven "javax.servlet.http.HttpServlet"
- 异或的魅力
- KETTLE 执行转换时遇到错误,记录并继续运行
- MOBX在项目开发中的具体使用
- DOM 树的解析渲染
- 创建一个简单的maven类型的springmvc项目
- 9、Tensorflow: 移动平均法又称滑动平均法、滑动平均模型法(Moving average,MA)
- ST用Keil下载程序问题错集锦!
- 这个HelloWorld有点长
- 安装系统后分区全部合并到C盘别的分区的文件怎样找到
- 二叉堆 删除 插入 调整 堆排序
- 【arduino】A4988驱动