【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

这篇具有很好参考价值的文章主要介绍了【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 网络请求 – 原生

【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

请求数据,保存数据

1 原生请求

Page({
  data: {
    allCities: {},
    houselist: [],
    currentPage: 1
  },
  async onLoad() {
    // 1.网络请求基本使用
    wx.request({
      url: "http://codercba.com:1888/api/city/all",
      success: (res) => {
      //保存数据
        const data = res.data.data
        this.setData({ allCities: data })
      },
      fail: (err) => {
        console.log("err:", err);
      }
    })

    wx.request({
      url: 'http://codercba.com:1888/api/home/houselist',
      //post和get都通过data传递参数
      data: {
        page: 1
      },
      success: (res) => {
        const data = res.data.data
        this.setData({ houselist: data })
      }
    })
}
//数据使用
<view class="house-list">
  <block wx:for="{{houselist}}" wx:key="{{item.data.houseId}}">
    <view class="item">
      <image src="{{item.data.image.url}}"></image>
      <view class="title">{{item.data.houseName}}</view>
    </view>
  </block>
</view>


2 函数封装,以Promise返回数据

// 封装成函数,单独写一个js文件,导出
export function hyRequest(options) {
//返回一个Promise
  return new Promise((resolve, reject) => {
    wx.request({ 
      ...options, 
      success: (res) => {
        resolve(res.data)
      },
      fail: reject
    })
  })
}
//使用
//导入封装好的js文件
import { hyRequest } from "../../service/index"
Page({
  data: {
    allCities: {},
    houselist: [],
    currentPage: 1
  },
  async onLoad() {
    

    // 2.使用封装的函数,无参数
    hyRequest({ 
      url: "http://codercba.com:1888/api/city/all" 
    }).then(res => {
      this.setData({ allCities: res.data })
    })
	// 有参数
    hyRequest({
      url: "http://codercba.com:1888/api/home/houselist",
      data: {
        page: 1
      }
    }).then(res => {
      this.setData({ houselist: res.data })
    })

3 Promise的语法糖封装await/async(推荐)

需要封装为单独的函数,不然不是异步的

//封装
async getCityData() {
    const cityRes = await hyRequest({ 
      url: "http://codercba.com:1888/api/city/all" 
    })
    this.setData({ allCities: cityRes.data })
  },
  async getHouselistData() {
    const houseRes = await hyRequest({
      url: "http://codercba.com:1888/api/home/houselist",
      data: { page: this.data.currentPage }
    })
    //数组追加数组数据,(加载更多)
    const finalHouseList = [...this.data.houselist, ...houseRes.data]
    this.setData({ houselist: finalHouseList })
    // 思考: 为什么这里不需要setData?
    this.data.currentPage++
  },
  //使用
  Page({
  data: {
    allCities: {},
    houselist: [],
    currentPage: 1
  },
  async onLoad() {

    this.getCityData()
    this.getHouselistData()

2 网络请求-封装为类

(推荐,可配置不同基础URL的多个实例)

//封装为单独的js文件
// 封装成类 -> 实例
class HYRequest {
  constructor(baseURL) {
    this.baseURL = baseURL
  }
  request(options) {
    const { url } = options
    return new Promise((resolve, reject) => {
      wx.request({
        ...options,
        url: this.baseURL + url,
        success: (res) => {
          resolve(res.data)
        },
        fail: (err) => {
          console.log("err:", err);
        }
      })
    })
  }
  get(options) {
    return this.request({ ...options, method: "get" })
  }
  post(options) {
    return this.request({ ...options, method: "post" })
  }
}
//导出不同基础URL的类实例
export const hyReqInstance = new HYRequest("http://codercba.com:1888/api")
export const hyLoginReqInstance = new HYRequest("http://123.207.32.32:3000")

//使用
import { hyRequest, hyReqInstance } from "../../service/index"

Page({
  data: {
    allCities: {},
    houselist: [],
    currentPage: 1
  },
  async onLoad() {

    //使用类的实例发送请求
    hyReqInstance.get({
      url: "/city/all"
    }).then(res => {
    //保存数据
       this.setData({ allCities: res.data })
    })
  },

3 提示弹窗

【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】


Page({
  // 1.仅提示
  onShowToast() {
    wx.showToast({
      title: '购买失败!',
      icon: "error",
      duration: 5000,
      mask: true,
      success: (res) => {
        console.log("res:", res);
      },
      fail: (err) => {
        console.log("err:", err);
      }
    })

    // wx.showLoading({
    //   title: "加载中ing"
    // })
  },
  //是否选择
  onShowModal() {
    wx.showModal({
      title: "确定购买吗?",
      content: "确定购买的话, 请确定您的微信有钱!",
      confirmColor: "#f00",
      cancelColor: "#0f0",
      success: (res) => {
        if (res.cancel) {
          console.log("用户点击取消");
        } else if (res.confirm) {
          console.log("用户点击了确定");
        }
      }
    })
  },
  //多个选择
  onShowAction() {
    wx.showActionSheet({
      itemList: ["衣服", "裤子", "鞋子"],
      success: (res) => {
        console.log(res.tapIndex);
      },
      fail: (err) => {
        console.log("err:", err);
      }
    })
  },

4 分享功能

【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

// 2.分享功能,不写也能分享,有默认的内容
  onShareAppMessage() {
    return {
      title: "旅途的内容",
      path: "/pages/favor/favor",
      imageUrl: "/assets/nhlt.jpg"
    }
  },

5 获取设备信息

// 1.获取手机的基本信息
    wx.getSystemInfo({
      success: (res) => {
        console.log(res);
      }
    })

6 获取位置信息

//需要先在app.json中获取授权
"permission": {
    "scope.userLocation": {
      "desc": "需要获取您的位置信息"
    }
  },
//获取用户位置信息
    wx.getLocation({
      success: (res) => {
        console.log("res:", res);
      }
    })



7 Storage存储

【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

8 界面跳转的方式

携带数据跳转其他页面

【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】
【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

页面返回 - navigateBack

【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】

9 反向页面跳转 - 数据传递

方式一:获取上一个界面的实例,直接修改数据


onBackTap() {
    // 1.返回上级页面
    wx.navigateBack()

    // 获取到当前页面栈的所有页面
    const pages = getCurrentPages()
    //获取上一级页面
    const prePage = pages[pages.length-2]

    // 通过setData给上一个页面设置数据(message是上一个页面定义的数据)
    prePage.setData({ message: "呵呵呵" })

方式二,渠道传递

【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】文章来源地址https://www.toymoban.com/news/detail-486479.html

到了这里,关于【7 微信小程序学习 - 小程序的系统API调用,网络请求封装】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 原生微信小程序中进行 API 请求

    当在原生微信小程序中进行 API 请求时,封装请求可以提高代码的可维护性和可扩展性。在本篇博客中,我们将一步步介绍如何进一步封装请求,并添加请求超时、拦截器和请求取消功能。 第一步:基本请求封装 首先,我们创建一个用于发送 HTTP 请求的基本封装。在微信小程

    2024年02月07日
    浏览(44)
  • 微信小程序调用百度智能云API(菜品识别)

    这里需要使用到如下几个参数(如下),其他的参数可以不管 client_id : 就是创建应用后的API Key client_secret: 就是创建应用后的Secret Key image: 需要用图片转换后的base64 url : 需要用到图片的线上地址,不能使用本地ip地址 调用成功后会如下图返回数据,当前使用以下三个数据

    2024年04月27日
    浏览(35)
  • 微信小程序路由跳转,API调用,页面传值

    wx.switchTab 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。 wx.reLaunch 关闭所有页面,打开到应用内的某个页面。 wx.redirectTo 关闭当前页面,跳转到应用内的某个页面。但是不能跳转到 tabbar 页面。 wx.navigateTo 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面

    2024年02月12日
    浏览(43)
  • 【微信小程序调用百度API实现图像识别功能】----项目实战

    本章主要讲述: 如何更快的上手小程序 如何搭建一个页面以及跳转到另一个页面 如何调用百度API接口实现图像识别技术 如何在微信小程序的后台添加合法域名        私信获取源码,有问题可以关注留言或私信,计算机毕业设计(小程序,网页设计,数据库,php开发等) 目录

    2024年02月09日
    浏览(63)
  • 【微信小程序调用百度API实现图像识别实战】----前后端分离

    前言:基于之前发布的文章【微信小程序调用百度API实现图像识别功能】----项目实战稍微进行了升级改进,主要新增了后端,数据库,实现对于虫害识别,返回防治建议等信息。 本文主要讲述: 如何创建数据库 如何连接数据库 如何创建后端服务 如何调用后端服务 目录  一

    2024年04月25日
    浏览(47)
  • uniapp 微信小程序 封装公共的请求js(api版本)

    一、新建api文件夹 在项目目录下创建api文件夹,内放files跟index.js文件夹,files文件夹内放每个页面对应的js请求接口 1、index.js 2、例如:login.js 二、config.js 三、main.js 四、页面使用

    2024年02月14日
    浏览(47)
  • 【微信小程序】调用百度API进行图像识别(以植物识别为例)

    需要素材与源码可联系笔者,项目文件过多不适宜全部展示。 微信小程序调用百度API可分为以下三步: 注册百度智能云账号,并开通植物识别API 在小程序中调用 渲染在小程序页面上 移步百度只能云平台https://cloud.baidu.com/ 注册好账号之后,把鼠标放在 产品 上,侧边会展开

    2024年02月05日
    浏览(55)
  • 微信小程序网络请求封装

    网络请求地址放到url.js中,分别制定开发环境,体验环境,线上环境 网络请求的方法放到request.js中,暴露get、post、wxLogin方法 请求前显示加载中,请求结束后隐藏加载中 请求的接口方法,放到api.js中,并调用request.js中对应的方法 2.1 请求地址(url.js) 2.3 具体的请求方法(api.

    2024年02月15日
    浏览(39)
  • 微信小程序-----网络数据请求

    目录 前言 一、 小程序中网络数据请求的限制 二、配置 request 合法域名 三、发起 GET 请求  四、发起 POST 请求 五、在页面刚加载时请求数据 六、跳过 request 合法域名校验 七、关于跨域和 Ajax 的说明         本期我们学习微信小程序中如何发起网络数据请求,通过网络数据

    2024年02月19日
    浏览(38)
  • 微信小程序调用拨打电话API,实现选择拨打固话或手机号。

    HTML 部分: JavaScipt 部分: (vue中 ,👇这段将写在 methods 里边) 效果 ···  有 固话 且 和 手机号 不相同图片演示:  效果 ···  两个 号码 相同 图片演示:   可根据需求自加判断条件,也可以选择此段代码直接服用。(收藏 关注哟 ♥)

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包