118.【微信小程序 - 02】(六)

简介: 118.【微信小程序 - 02】

3.使用 npm 包 -API Promise 化

(1). 基于回调函数的异步 API 的缺点

默认情况下,小程序官方提供的异步API 都是基于回调函数实现的,列如: 网络请求的API需要按照如下的方式调用:

wx.request({
  method: '',
  url:'',
  data:{},
  success:()=>{},  // 请求成功的回调函数
  fail:()=>{},  // 请求失败的回调函数
  complete:()=>{} // 请求完成的回调函数
})

缺点: 容易造成回调地狱的问题,代码的可读性、维护性差!

(2).什么是 API Promise 化

API Promise化,指的是提供额外的配置,将官方提供的、基于回调函数的异步API,升级改造为基于Pormise的异步API,从而提高代码的可读性、维护性,维护性,避免回调地狱的问题。

(3).实现 API Promise化

在小程序中,实现API Promise化主要依赖于 miniprogram-api-promise这个第三方的npm包。

npm i --save miniprogram-api-promise@1.0.4

记住: 我们每次在微信小程序安装一个包,我们不能够立马进行使用,我们需要重新构建npm。

第一步: 删除包

第二步 重新构建

第三步: 成功之后

(4).使用 API Promise 化
  1. 第一步在 app.js中引入

app.js

在小程序入口文件中(app.js),只需调用一次promisifyAll()方法.即可实现异步 API 的promise化。

// app.js
import {promisifyAll} from 'miniprogram-api-promise'
const wxp=wx.p={}
promisifyAll(wx,wxp)

  1. 在home.wxml

hoem.xml 绑定方法

<!--pages/home/home.wxml-->
<text class="t1">首页</text>
<van-button type="primary" bindtap="getinfo">默认按钮</van-button>
  1. 在home.js
Page({
  async getinfo(){
    const res= await wx.p.request({
      method:'GET',
      url:'https://applet-base-api-t.itheima.net/api/get',
      data:{
        name:'zs',
        age:20
      }
    })
    console.log(res)
  },
})

不去掉关键字

去掉关键字

(八)、全局数据共享

1.全局数据共享 - 概述

全局数据共享 (又叫做: 状态管理)是为了解决组件之间数据共享的问题。

开发中常用的全局数据共享方案有: Vuex、Redux、MobX等等。

(1).小程序中的全局数据共享方案

在小程序中,可使用 mobx-miniporgram 配合 mobx-miniporgram-bindings 实现全局数据共享。

  • mobx-miniporgram 用来创建Store实列对象
  • mobx-miniporgram-bindings 用来把Store中的共享数据或方法,绑定到组件或页面中使用

2.全局数据共享 - MobX

(1).安装MobX相关的包

在项目中运行如下的命令,安装MobX相关的包:

npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1

删除目录树下的包

构建npm的包

(2).创建MobX的Store实列

store/store.js

// 在这个js文件中,专门来常见Store的实列对象
import { action, observable } from "mobx-miniprogram";  // 引入MobX,这里的数据都不能自定义
// 抛出 Mobx
export const store = observable({
      // 共享下面的变量
        // (1).共享数据字段
      numA:1,
      numB:2,
        // (2).计算属性 -》 关键字 get 表示这个计算属性是只能 读取的。
       get sum(){
         return this.numA+this.numB
       },
       //  (3).actions 方法 用来修改store中的数据
       updateNum1:action(function(step){  // 第一个是 自定义方法名, 第二个是 action
         this.numA+=step
       }),
       updateNum2:action(function(step){
        this.numB+=step
      })  
})
(3).将Store中的成员绑定到页面中

home.wxml

// 1. 导入包和实列对象 
import { createStoreBindings } from 'mobx-miniprogram-bindings';
import { store } from '../../store/store';
Page({
  /**
   * 页面的初始数据
   */
  data: {
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 绑定
   this.storeBindings= createStoreBindings(this,{
      store, // 1.实列对象
      fields:['numA','numB','sum'], // 2. 我们在store.js中定义的属性
      actions:['updateNum1','updateNum2'] // 3. 我们在store.js中定义的方法
    })
  },
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
  // 解除绑定
    this.storeBindings.destoryStoreBindings()
  },
})


相关文章
|
容器
Unreal Niagara粒子入门1
Unreal Niagara粒子入门1
311 1
Unreal Niagara粒子入门1
|
Java 开发者 NoSQL
SpringBoot如何整合Neo4j? | 带你读《SpringBoot实战教程》之三十一
本节介绍了SpringBoot利用Neo4j实现用户的添加查找。
SpringBoot如何整合Neo4j? | 带你读《SpringBoot实战教程》之三十一
|
6月前
|
XML Android开发 数据格式
Android利用selector(选择器)实现图片动态点击效果
本文介绍了Android中ImageView的`src`与`background`属性的区别及应用,重点讲解如何通过设置背景选择器实现图片点击动态效果。`src`用于显示原图大小,不拉伸;`background`可随组件尺寸拉伸。通过创建`selector_setting.xml`,结合`setting_press.xml`和`setting_normal.xml`定义按下和正常状态的背景样式,提升用户体验。示例代码展示了具体实现步骤,包括XML配置和形状定义。
274 3
Android利用selector(选择器)实现图片动态点击效果
|
11月前
|
存储 云安全 安全
云概述:云计算简明概述
本文概述了云计算的基本概念、服务模型(IaaS、PaaS、SaaS)、部署模型(私有云、社区云、公共云、混合云)、应用场景(云存储、云桌面、云游戏等)及市场趋势,强调了云计算在推动数字化转型中的重要作用。
1292 60
云概述:云计算简明概述
|
监控 数据可视化 数据挖掘
一文带你了解如何通过数据可视化与仪表盘提升工作效率?
在数据驱动的时代,快速、准确地从海量信息中提取有用部分成为核心挑战。**数据可视化**和**仪表盘**是解决这一问题的有效工具。它们将复杂数据转化为直观图表,帮助用户快速掌握关键指标、跟踪进展,并做出更好决策。本文将介绍数据可视化的常见方法、仪表盘的作用,并通过经典案例展示这些工具的实际应用。
302 0
|
Kubernetes 搜索推荐 应用服务中间件
制作KubeVirt镜像
制作KubeVirt镜像
432 13
|
存储 JavaScript 开发者
Flutter应用开发:掌握StatefulWidget的实用技巧
Flutter应用开发:掌握StatefulWidget的实用技巧
204 0
|
数据采集 人工智能 数据可视化
“会数据同学”首站走进雅戈尔,看老牌男装品牌如何用“数据+AI”华丽转身
“会数据同学”首站走进雅戈尔,看老牌男装品牌如何用“数据+AI”华丽转身
393 0
|
人工智能 黑灰产治理 开发者
虚拟模特,一键生成高颜值AI模特!活动震撼来袭,快来生成你的高颜值模特大片!
体验”通义万相-虚拟模特“,晒出属于你的高颜值AI模特大片,在活动页面提交作品以及使用反馈,即有机会获得反馈奖哦!
1159 11
虚拟模特,一键生成高颜值AI模特!活动震撼来袭,快来生成你的高颜值模特大片!
|
安全 Java Maven
如何使用jsoup实现网站登录,cookie保存,查询信息
【6月更文挑战第11天】如何使用jsoup实现网站登录,cookie保存,查询信息
502 1
下一篇
开通oss服务