原创 黑马程序员微信小程序学习总结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脚本,串行端口的握手协议(流控制)

在Unity的SerialPort构造函数中,流控制并没有被直接包含。流控制,也被称为握手,是一种过程,它管理数据的传输速度,以防止接收方被发送方发送的数据量所淹没。 在.NET的SerialPort类中,流控制是通过Handshak…

bpmn-js中实现xml数据转为json数据

开发bpmn-js建模器,希望将bpmn数据格式转为json数据格式更加清晰的展示数据层次,以结果为导向分析需求,实现功能的思路有两种方式: 通过bpmn-js转化为JS数据对象,然后通过JS中提供的JSON模块转换为json数据将xml解析成dom对象,通过dom对象转化为json格式数据三方库这里主…

15.3 基于深度学习的WiFi指纹低成本地点识别

文献来源:Nowicki M, Wietrzykowski J. Low-effort place recognition with WiFi fingerprints using deep learning[C]//Automation 2017: Innovations in Automation, Robotics and Measurement Techniques 1. Springer International Publishing, 2017: 575-584. 摘要 使…

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

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

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

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

HCIE,选安全还是数通?题库怎么找?

HCIE认证是华为认证中含金量非常高的一个认证,其考试难度也比较大,而在诸多方向中,安全和数通是两个比较热门的方向。 接下来就分别以这两个方向为例,讲一讲这个证书的含金量以及考试题库的获取。 此外,在本篇文章中…

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

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

docker 容器修改端口

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

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

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

SpringBoot Redis 分布式锁的正确实现方式

一、错误的分布式锁 使用 Redis SET 指令实现加锁, 指令满足了当 key 不存在则设置 value,同时设置超时时间,并且满足原子语意。 SET lockKey 1 NX PX expireTime lockKey 表示锁的资源,value 设置成 1。 NX:表示只有 lockKey 不存在的时候才能 SET 成功,从而保证只有一个…

【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 题目 描述 输入描述: 输…

编辑距离(Edit Distance)的介绍

编辑距离(Edit Distance),也称为 Levenshtein 距离,是衡量两个字符串之间相似程度的指标。它表示将一个字符串转换成另一个字符串所需的最少编辑操作次数。常见的编辑操作包括插入一个字符、删除一个字符、替换一个字符。 在 C 中…