React Native中Mobx的使用方法详解
前言
从今天开始我们来搞搞状态管理可否,这几天没怎么写博客,因为被病魔战胜了,tmd,突然的降温让我不知所措,大家最近注意安全,毕竟年底了,查的严,呸,大家注意保暖
特别声明写该文只是写一下用MobX的思路,有很多地方我会直接放官网链接,因为官网已经写的够详细了
来个比较简单的,MobX。
引用官网上的一句话
MobX 是一个经过战火洗礼的库,它通过透明的函数响应式编程(transparently applying functional reactive programming - TFRP)使得状态管理变得简单和可扩展。MobX背后的哲学很简单:
MobX 是一款精准的状态管理工具库,对我来说非常容易学习和接受。我在 React 和 React Native 应用中使用过 Flux、Alt、Redux 和 Reflux,但我会毫不犹豫地说,MobX 的简单性立即成为了我最喜欢的状态管理工具。我期望能将它运用在未来的项目中,并且对 MobX 的发展拭目以待。
任何源自应用状态的东西都应该自动地获得。其中包括UI、数据序列化、服务器通讯,等等。
上官网的图
环境我就不配了,官网给了详细的教程,我的环境是RN+TS,这里需要特别注意一下,由于Mobx要用的装饰器,如果单纯的用create-react-app安装好环境后,一定要特别特别注意
此时使用@observable是不行的,因为不支持装饰器语法,
此问题有两种解决方案1.在当前环境中设置支持装饰器,
狼蚁网站SEO优化是官网的详细配置链接,https://.mobx.js./best/decorators.html
2.使用MobX的内置的 decorate 工具在不支持装饰器语法的情况加使用
接下来狼蚁网站SEO优化给你吃,不是,狼蚁网站SEO优化我用一个小例子来演示一下,Go,Go,Go(注意,我这里面默认装饰器是可用的,因为我环境配好了已经)
1.yarn add mobx
2.我们状态管理肯定会有一个仓库吧,那我们来建一个仓库,(注意我创建了两个小的分支,因为状态管理总不可能怼到一个文件里面吧)
上一手仓库的结构
home.tsx的代码
注意1. 从mobx中引入observable,action
2.用装饰器修饰仓库的数据
3.导出时需要new一下
import { observable, action } from 'mobx' class List { @observable isShowMap: boolean = false @action switchTab (info: boolean) { this.isShowMap = info } } export default new List()
list.tsx的代码
注意1.此处多加入了runInAction,不加此属性也可以,就不会记录时间旅行了
import { observable, action, runInAction } from 'mobx' class List { @observable listData: Array<any> = [] @action getListData () { fetch('https://ik9hkddr.qcloud.la/mock/cookbook-list.json') .then(reponse => reponse.json()) .then(result => { runInAction(() => { this.listData = result.data }) }) } } export default new List()
index.js的代码
注意在此处将两个树枝里面的数据都引入,合并到一起
import list from './list' import home from './home' const store = { list, home } export default store
3.将仓库绑定到根组件上
注意在此引入Provider将仓库和根组件绑定
import React from 'react' import { Provider } from 'mobx-react' import Home from './pages/home/Home' import HotList from './pages/hotlist/HotList' import store from './store' export default class ponentName extends React.Component { render() { return ( <Provider store={store}> <RootStack></RootStack> </Provider> ) } }}
4.一步,在组件中引用仓库里的数据,并可以修改仓库里的数据
注意1.引入observer和inject,将组件和仓库连接起来,类似于在React中使用react-redux中的connnect方法
import React from 'react' import { observer, inject } from 'mobx-react' import { View, Text, } from 'react-native' interface Props { } interface State { } //此处时引用最重要的步骤用inject和observer @inject('store') @observer export default class Home extends React.Component<Props, State> { render () { return ( <View> {/ 引用store里面储存的值
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程