文章目录

  • API的Promise化
    • 创建promise化的对象
  • 全局状态管理
    • 创建
    • 页面中绑定
    • 页面中使用
    • 组件中绑定
    • 组件中使用

API的Promise化

默认情况下小程序官方提供的API都是基于回调函数实现的,例如

wx.request({method:'',url:'',data:{},success:()=>{},fail: ()=>{},complete: ()=>{}
})

为了避免回调地狱的问题,我们将小程序的API Promise化

小程序中的Promise主要依赖于miniprogram-api-promise三方npm包

每次装完新包要记得重新构建npm,同时建议重新构建前先删除miniprogram_npm这个文件

创建promise化的对象

// app.js
import {promisifyAll} from 'miniprogram-api-promise'
// 创建wxp和wx.p用于存放封装好的api
const wxp = wx.p = {}
promisifyAll(wx,wxp)

全局状态管理

即解决组件之间数据共享的问题,常用的全局共享解决方案有:Vuex、Redux、MobX等

在小程序中,我们使用mobx-miniprogram配合mobx-miniprogram-bindings实现全局数据共享

  • mobx-miniprogram用于创建store实例对象
  • mobx-miniprogram-bindings用于将store中的共享数据或方法,绑定到组件或页面中使用
npm i --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1

创建

在根目录创建store文件夹,内部含store.js

// 该文件用于创建store实例
import {action, observable} from 'mobx-miniprogram'export const store = observable({// 数据字段numA: 1,numB: 2,// 计算属性get sum(){return this.numA + this.numB},// actionsupdateNumA: action(function(step){this.numA += step})
})

页面中绑定

  1. 导入
  2. onLoad周期进行绑定
  3. onUnload周期进行清理
import {createStoreBindings} from 'mobx-miniprogram-bindings'
import {store} from '../../store/store'onLoad: function (options) {// createStoreBindings(实例,配置对象)// 配置对象:store数据源;fields数据;actions方法this.storeBindings = createStoreBindings(this,{store,fields:['numA','numB','sum'],actions:['updateNumA']})
},
onUnload: function () {this.storeBindings.destroyStoreBindings()
},

页面中使用

<view>{{numA}} + {{numB}} = {{sum}}</view>
<van-button type="primary" bindtap="btnClick" data-step="{{1}}"> numA+1 </van-button>
<van-button type="danger" bindtap="btnClick" data-step="{{-1}}"> numA-1 </van-button>
btnClick(e){this.updateNumA(e.target.dataset.step)
},

组件中绑定

import { storeBindingsBehavior } from 'mobx-miniprogram-bindings'
import { store } from '../../store/store'Component({// 自动绑定behaviors:[storeBindingsBehavior],storeBindings:{store,fields:{numA: ()=> store.numA, // 绑定字段第一种方式numB: (store)=>store.numB, // 绑定字段第二种方式sum:'sum' // 绑定字段第三种方式},actions:{updateNumB:"updateNumB"}}
})

组件中使用

同页面的使用方法

微信小程序API的Promise化及全局状态管理MobX相关推荐

  1. 微信小程序-API的Promise化

    npm初始化 npm init -y 安装小程序的Promise包 1.使用腾讯官方出的第三方库实现小程序所有API 的 Promise 化 npm install --save miniprogra ...

  2. 微信小程序 API的 promise化

    // 步骤1 安装 npm包  npm i --save miniprogram-api-promise // 步骤2 删除 miniprogram_npm文件夹    (建议) // 步骤3 重新构 ...

  3. 小程序API的Promise化

    小程序官方提供的异步API都是基于回调函数来实现的,如大量的使用回调函数就会造成 回调地狱 的问题,同时代码的可读性和可维护性差,那么这篇内容主要来讲小程序API的Promise化,Promise是一 ...

  4. 微信小程序api接口调用用封装

    微信小程序api接口调用用封装 1. 在 02-项目 下新建request目录及index.js文件 1.1 02-项目\request\index.js 1.2.index.js // 同时发送异步 ...

  5. PbootCMS微信小程序API的封装使用教程

    PbootCMS微信小程序API的封装使用教程 原文网址:https://www.lkcms.top/rgcms/58.html 第一步:准备md5加密文件 PbootCMS的签名参数signatur ...

  6. 小程序怎么处理轮训ajax,微信小程序中使用Promise进行异步流程处理的实例详解...

    微信小程序中使用Promise进行异步流程处理的实例详解 我们知道,JavaScript是单进程执行的,同步操作会对程序的执行进行阻塞处理.比如在浏览器页面程序中,如果一段同步的代码需要执行很长时间( ...

  7. 微信小程序 api 缓存方案

    微信小程序 api 缓存方案 背景 前言 缓存方案(更新策略) 缓存那些接口 Storage 缓存工具类 ApiCache 类实现 配置 封装 request 请求 总结 背景 为了应对用户流量大,减 ...

  8. 微信小程序api概述

    微信小程序api概述 1.api 1.1 网络api 1.2 缓存api 1.3 界面api 2 开放能力-获取用户信息 2.1 通过API获取用户信息 3 图片与文件 3.1 下载图片 3.2 上传 ...

  9. 小程序 长按api_微信小程序API相关知识科普

    微信小程序API(Application Programming Interface),即应用程序编程接口.API是一种接口函数,把函数封装起来,给开发者,这样好多的功能就不需要你去实现了,只要会调用 ...

最新文章

  1. 使用指针判断数组是否为上三角矩阵
  2. Android中Parcel的分析以及使用
  3. 彻底理解DFT定义(第三章离散傅里叶变换(3.1)学习笔记)
  4. How to sign app
  5. Linux的实际操作:Linux磁盘分区 、挂载
  6. Spring MVC url提交参数和获取参数
  7. Atitit 提现功能安全条例 目录 1. 防余额篡改 1 2. 大额 频繁交易预警系统 1 3. 增加审核 流程 1 4. 增加审计 1 5. 财务出款核对 1 6. Other 2 6.1. 数
  8. 配置防盗链 访问控制Directory 访问控制FilesMatch
  9. Ubuntu 18.04安装
  10. 扒一扒国产 Linux 操作系统架构是怎么设计的 ?
  11. 【机器学习基础】正规方程法(Normal equation)(正则化和非正则化)——吴恩达课程笔记
  12. Jupyter启动报错 ImportError: DLL load failed while importing error
  13. 华为p4不是鸿蒙吗怎么又改为安卓_华为已将“基于安卓10”变成“兼容安卓10”,EMUI就是鸿蒙OS...
  14. Jenkins生成APP二维码下载链接
  15. 傅里叶变换及低通滤波再反变换(C++opencv)
  16. 软件测试转行跳槽必看问题解答
  17. C语言隐式类型转换(字符类型以及短整型的运算规则)
  18. Django模板变量精讲
  19. 用c++实现俄罗斯方块(免费版)
  20. 关于浏览器请求PHP一次请求执行了两次

热门文章

  1. 二分法解一元三次方程c语言,电子技术的应用用二分法解一元三次方程的C++程序:保护环境的广告语...
  2. 背景的样式(雪碧图)
  3. 统计学习 EM算法 Python实现
  4. can-utils使用
  5. Ubuntu下非常给力的下载工具--uget+aria2
  6. 我的职场十年:谈谈普通员工的各种低级错误
  7. 花游双人、三级跳斩获金银
  8. 地图实现-网页版Google Map
  9. KVM内存管理(三)—— KSM操作实践
  10. Redis数据类型有哪些?