原创 黑马程序员微信小程序学习总结9.API Promise化、全局数据共享(store)

目录

  • API Promise化
    • 基于回调函数的异步API的缺点
    • 什么是API Promise化
    • 使用步骤
      • 实现API Promise化步骤
    • 结果(用处)
  • 全局数据共享
    • 如何安装mobx相关的包实现全局共享
    • 使用方法
      • 如何将store中的成员绑定到组件中(即在组件中使用store)

API Promise化

基于回调函数的异步API的缺点

在这里插入图片描述

回调地狱会在嵌套请求中出现如:
在这里插入图片描述
这种嵌套的结构使得代码难以阅读和理解,尤其是当需要处理错误时更加复杂。为了解决这个问题,可以使用Promise、async/await等异步编程的改进技术,以及模块化和函数式编程的方法来避免回调地狱。

什么是API Promise化

在这里插入图片描述

使用步骤

在项目根目录下使用命令
在这里插入图片描述

实现API Promise化步骤

执行命令:
在这里插入图片描述
命令会将包安装到node_modeules中,但是小程序不能直接读取,所以还需要下面构建,把包迁移到miniprogram_npm文件夹中

在这里插入图片描述
在这里插入图片描述
注意:老版本需要在文件夹下删除miniprogram_npm再构建,新版本无需(2024/02/22)

在这里插入图片描述

使用时:
在这里插入图片描述
也可以用结构赋值只取出data数据:
在这里插入图片描述

结果(用处)

可以看到不用写回调函数就能获取请求,以前的多重嵌套请求也可以顺序写了

全局数据共享

ps:如果你学过c语言,你就会知道全局变量有多么方便,不需要函数来来回回传参
在这里插入图片描述
在这里插入图片描述

如何安装mobx相关的包实现全局共享

在这里插入图片描述
`注意:目前不需要删除目录(2024/2/22)

使用方法

1.store.js

分为:
1.数据字段
2.计算数学
3.action函数

在这里插入图片描述
代码:

// 在这个 JS 文件中,专门来创建 Store 的实例对象
import { observable, action } from 'mobx-miniprogram'export const store = observable({// 数据字段numA: 1,numB: 2,activeTabBarIndex: 0,// 计算属性get sum() {return this.numA + this.numB},// actions 函数,专门来修改 store 中数据的值updateNum1: action(function (step) {this.numA += step}),updateNum2: action(function (step) {this.numB += step}),updateActiveTabBarIndex: action(function(index) {this.activeTabBarIndex = index})
})

2.页面js文件
在这里插入图片描述

在这里插入图片描述

部分代码:

// 导入mobx-miniprogram-bindings中的createStoreBindings函数
import { createStoreBindings } from 'mobx-miniprogram-bindings'// 导入store对象,该对象包含应用程序的状态和行为
import { store } from '../../store/store'Page({// 页面加载时触发的生命周期函数,options参数用于接收页面跳转时的参数onLoad: function (options) {// 使用createStoreBindings函数创建数据绑定// 将当前页面(this)与store对象进行绑定this.storeBindings = createStoreBindings(this, {// 指定要绑定的store对象store,// 指定要绑定的字段,这些字段将会自动同步store中的对应字段fields: ['numA', 'numB', 'sum'],// 指定要绑定的行为,这些行为将会自动调用store中对应的方法actions: ['updateNum1']})},
})

wxml中使用:
在这里插入图片描述

btnHandler1为js中的事件处理函数,在此函数中可以使用action函数,data-step是wxml向js中传参。
在这里插入图片描述

如何将store中的成员绑定到组件中(即在组件中使用store)

在组件js中导入:
在这里插入图片描述

一般直接使用第三种绑定方式
导入完成后即可在组件中wxml页面调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/706928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】Pytorch教程(八):PyTorch数据结构:2、张量的数学运算(6):高维张量:乘法、卷积(conv2d~四维张量;conv3d~五维张量)

文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor(张量)1. 维度(Dimensions)2. 数据类型(Data Types)3. GPU加速(GPU Acceleration) 2、张量的数学运算1. 向量运算2. 矩阵…

【论文复现】——一种新的鲁棒三维点云平面拟合方法

目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的GPT爬虫。 一、算法原理 1、论文概述 针对三维点云中的异常值和粗差点对平面拟合精度产生的影响,文章提出一…

【C++航海王:追寻罗杰的编程之路】类与对象你学会了吗?(上)

目录 1 -> 面向过程与面向对象的初步认识 2 -> 类的引入 3 -> 类的定义 4 -> 类的访问限定符及封装 4.1 -> 访问限定符 4.2 -> 封装 5 -> 类的作用域 6 -> 类的实例化 7 -> 类对象模型 7.1 -> 如何计算类对象的大小 7.2 -> 类对象…

SpringCloud Eureka(注册中心)

一、spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基…

Leetcoder Day25| 回溯part05:子集+排列

491.递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 输入:[4, 7, 6, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [6, 7], [7,7], [4,7,7]] 说明: 给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。给定数…

小程序一键链接WIFI

1.小程序一键链接WIFI connectWifi: function() {var that this;//检测手机型号wx.getSystemInfo({success: function(res) {var system ;if (res.platform android) system parseInt(res.system.substr(8));if (res.platform ios) system parseInt(res.system.substr(4…

Unity | 动态读取C#程序集实现热更新

目录 一、动态语言 二、创建C#dll 1.VS中创建一个C#语言的库工程 2.添加UnityEngine.dll的依赖 3.编写代码,生成dll 三、Unity使用dll 一、动态语言 计算机编程语言可以根据它们如何将源代码转换为可以执行的代码来分类为静态语言和动态语言。 静态语言&…

省市区街道/乡镇四级联动vue3

最近优化了一个省.市.区/县、乡镇/街道的四级联动组件,技术栈是element vue3记录一下。 本来是这样的三级联动: 这个三级联动很简单,直接利用el-select组件把地区值带进去就行了,现在要优化成省.市.区/县、乡镇/街道的四级联动&…

提高笔记本电脑使用寿命,这几个技巧很重要!

“我新买了一台笔记本电脑,想问问在平常使用时我应该注意什么才可以更好地提高笔记本电脑的使用寿命呢?” 随着科技的不断发展,笔记本电脑已经成为我们日常生活中不可或缺的一部分。然而,许多人在使用笔记本电脑时,往往…

docker 容器修改端口

一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [container-name] -p 8088:80 [image-name]这里是将容器内的80端口…

平板江湖:华为“行”、苹果“停”、小米“等一等”

配图来自Canva可画 近年来,随着人们对日常生活和办公中的智能电子产品提出了越来越高的要求,智能手机和平板电脑的产品类型便开始变得更加丰富、价位覆盖更为全面、场景应用也更显多样起来。只不过,在进入新的一年后,与智能手机市…

【PHP】Workerman开源应用容器的GatewayWorker 与 iOS-OC对接

Workerman 开源高性能PHP应用容器 workerman是一款开源高性能PHP应用容器,它大大突破了传统PHP应用范围,被广泛的用于互联网、即时通讯、APP开发、硬件通讯、智能家居、物联网等领域的开发。 PHPSocket.io PHP版本的socket.io,具有良好的客户端兼容性,常用于即时通讯领域…

时间序列分析实战(八):时序的格兰杰因果检验

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

C语言题目练习

目录 前言 1、网购 1.1题目 描述 输入描述: 输出描述: ​编辑 1.1 解题 2、带空格直角三角形图案 2.1题目 描述 输入描述: 输出描述: ​编辑 2.2 解题 3、小乐乐改数字 3.1 题目 描述 输入描述: 输…

【自然语言处理三-self attention自注意是什么】

自然语言处理三-自注意力 self attention 自注意力是什么?自注意力模型出现的原因是什么?词性标注问题解决方法1-扩展window,引用上下文解决方法2-运用seq2seq架构新问题来了:参数量增加、无法并行的顽疾 自注意力self attention模…

备战蓝桥杯————k个一组反转单链表

k个反转单链表,顾名思义就是k个节点为一组进行反转,这是一道困难的题目,如何解答,可以在我们前面的反转链表中得到思路。 如何 K 个一组反转单链表 题目描述 给你链表的头节点 head ,每 k 个节点一组进行翻转&#xf…

MySQL表分区技术介绍

目录 1. 分区概述 1.1 表分区 1.2 表分区与分表的区别 1.3 表分区的好处 1.4 分区表的限制因素 2. 如何判断当前MySQL是否支持分区? 3. 分区类型详解 3.1 MySQL支持分区类型 3.2 RANGE分区 3.2.1 根据数值范围分区 3.2.2 根据TIMESTAMP范围分区 3.2.3 根…

视频mov如何转换成mp4?五分钟学会4种方法

在今天的数字时代,我们不可避免地需要处理各种视频文件格式。MOV格式是由苹果公司开发的一种常见视频格式,而MP4格式则是更为通用和广泛支持的视频格式。 因此,当我们需要在不同设备或平台上播放或分享视频时,可能需要将MOV格式的…

Eclipse是如何创建web project项目的?

前面几篇描述先后描述了tomcat的目录结构和访问机制,以及Eclipse的项目类型和怎么调用jar包,还有java的main函数等,这些是一些基础问题,基础高清出来才更容易搞清楚后面要说的东西,也就是需求带动学习,后面…

Unity开发一个FPS游戏

在之前的文章Unity 3D Input System的使用-CSDN博客中,我介绍了如何用Input System来实现一个FPS游戏的移动控制,这里将进一步完善这个游戏。 以下是游戏的演示效果: fps_demo 添加武器模型 首先是增加主角玩家的武器,我们可以在网上搜索到很多免费的3D资源,例如在以下网…