首页 > 编程语言 >【微信小程序】本地生活案例

【微信小程序】本地生活案例

时间:2024-04-15 17:12:42浏览次数:25  
标签:https api 微信 案例 base 本地 net data itheima

1.效果图

1-1.首页效果图

1-2.列表

2.前期配置

2-1.微信后台配置

1.访问微信小程序管理后台配置请求域

只有配置了后台才能请求接口

3.功能实现

3-1.首页

1.请求后台接口获取轮播图

    wx.request({
      url: 'https://applet-base-api-t.itheima.net/slides',
      method:'GET',
      success:(res)=>{
        console.log(res)
        this.setData({
          arr:res.data
        })
      }
    })
  }

2.返回数据

[
  {
    "id": 1,
    "image": "https://applet-base-api-t.itheima.net/img/banner/banner01.png",
    "link": ""
  },
  {
    "id": 2,
    "image": "https://applet-base-api-t.itheima.net/img/banner/banner02.png",
    "link": "/pages/list/list?cat=10"
  }
]

3.请求后台接口获取九宫格

  goGetNine(){
    wx.request({
      url: 'https://applet-base-api-t.itheima.net/categories',
      method:'GET',
      success:(res)=>{
        console.log(res)
        this.setData({
          gradList:res.data
        })
      }
    })
  }

4.返回数据

[
  {
    "id": 1,
    "name": "美食",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav01.png"
  },
  {
    "id": 2,
    "name": "洗浴足疗",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav02.png"
  },
  {
    "id": 3,
    "name": "结婚啦",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav03.png"
  },
  {
    "id": 4,
    "name": "卡拉OK",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav04.png"
  },
  {
    "id": 5,
    "name": "找工作",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav05.png"
  },
  {
    "id": 6,
    "name": "辅导班",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav06.png"
  },
  {
    "id": 7,
    "name": "汽车保养",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav07.png"
  },
  {
    "id": 8,
    "name": "租房",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav08.png"
  },
  {
    "id": 9,
    "name": "装修",
    "icon": "https://applet-base-api-t.itheima.net/img/nav/nav09.png"
  }
]

4.生命周期函数中调用

 onl oad(options) {
    this.goGet()
    this.goGetNine();
  },

5.页面结构

<!--pages/home/home.wxml-->
<!-- 轮播图区域 -->
<swiper  indicator-dots autoplay indicator-color="white" indicator-active-color="gray" interval="3000" circular>
	<swiper-item  wx:for="{{arr}}" wx:key="id">
		<image src="{{item.image}}"></image>
	</swiper-item>
</swiper>
<!-- 九宫格区域 -->
<view class="body-main">
	<navigator class="body-child" wx:for="{{gradList}}" wx:key="id" url="/pages/shoplist/shoplist?id={{item.id}}&title={{item.name}}">
		<image src="{{item.icon}}"></image>
		<text>{{item.name}}</text>
	</navigator>
</view>
<!-- 静态图片区域 -->
<view class="static-image">
<image src="../../images/link-01.png" mode="widthFix"></image>
<image src="../../images/link-02.png" mode="widthFix"></image>
</view>

6.页面样式

/* pages/home/home.wxss */
swiper{
	height:350rpx;
}

swiper image{
	height:100%;
	width: 100%;
}

.body-main{
	display: flex;
  flex-wrap: wrap;
	margin: 15px 0;
	border-top: 1rpx solid #efefef;
	border-left: 1rpx solid #efefef;
}
.body-child{
	width: 33.33%;
	height: 200rpx;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	border-right: 1rpx solid #efefef;
	border-bottom: 1rpx solid #efefef;
	box-sizing: border-box;
}
.body-child image{
	width: 60rpx;
	height: 60rpx;
}
.body-child text{
	margin-top: 20rpx;
	font-size: 24rpx;
}

.static-image{
	display: flex;
	padding: 20rpx 10rpx;
	justify-content: space-around;
}

.static-image image{
	width:45% ;
}

3-2.列表

1.动态设置表头
在.js生命周期函数中赋值

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    // 动态设置标题,i读取路由参数
    wx.setNavigationBarTitle({
      title: this.data.query.title,
    })
  }

2.根据参数获取数据

 getShopList(){
    // 开始加载数据
    this.data.isLoading=true
    wx.showLoading({title:'正在加载中'}) //开启动画效果
    wx.request({
      // 动态参数用反引号!!!!
      url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,
      method:'GET',
      data:this.data.param,
      success:(res)=>{
        console.log(res.data)
        this.setData({
          shopList:[...this.data.shopList,...res.data],
          total:+res.header["X-Total-Count"]
        })
      },
      complete:()=>{
        wx.hideLoading() //隐藏动画
        this.data.isLoading=false
      }
    })
    
  }

注意:动态参数一定要用反引号!!!!

3.在.json中开启下拉刷新

4.在.js配置下拉刷新和上拉刷新

/**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log("xzzzz")
    this.data.param={
      _page:1,
      _limit:10
    },
    this.data.total = 0
    this.data.isloading = false
    this.data.shopList=[]
    // 重新发起请求
    this.getShopList();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
     // 判断是否还有下一页数据
  if (this.data.param._page * this.data.param._limit >= this.data.total) {
    return wx.showToast({
      title: '数据加载完毕!',
    })
  }
    if(this.data.isLoading)return
    console.log("上拉刷新")
    this.data.param._page++;
    this.getShopList();
  }

5.页面结构

<view class="list-item" wx:for="{{shopList}}" wx:key="{{item.id}}">
<view class="image-item">
<image src="{{item.images[0]}}" mode="">
</image>
</view>
<view class="info">
<text class="info-title">{{item.name}}</text>
<!-- 格式化电话号码 -->
<text>电话:{{m1.formartTel(item.phone)}}</text>
<text>地址{{item.address}}</text>
<text>营业时间{{item.businessHours}}</text>
</view>
</view>

<wxs src="../../utils/tool.wxs" module="m1"></wxs>

6.页面样式

.list-item{
	display: flex;
	padding: 15rpx;
	border: 1rpx solid #efefef;
	margin: 15rpx;
	border-radius: 15rpx;
	box-shadow: 1rpx 1rpx 15rpx #ddd;
}
.list-item image{
	width: 250rpx;
	height: 205rpx;
	display: block;
	margin-right: 15rpx;
}
.info{
	display: flex;
	flex-direction: column;
	justify-content: space-around;
	font-size: 24rpx;
}
.info-title{
	font-weight: bold;
}

7.js配置完整版

// pages/shoplist/shoplist.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    query:{},
    isLoading:false, //节流标志位
    shopList:[],
    param:{
      _page:1,
      _limit:10
    },
    total:0
  },

  getShopList(){
    // 开始加载数据
    this.data.isLoading=true
    wx.showLoading({title:'正在加载中'}) //开启动画效果
    wx.request({
      // 动态参数用反引号!!!!
      url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,
      method:'GET',
      data:this.data.param,
      success:(res)=>{
        console.log(res.data)
        this.setData({
          shopList:[...this.data.shopList,...res.data],
          total:+res.header["X-Total-Count"]
        })
      },
      complete:()=>{
        wx.hideLoading() //隐藏动画
        this.data.isLoading=false
      }
    })
    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onl oad(options) {
    this.setData({
      query:options
    })
    this.getShopList();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    // 动态设置标题,i读取路由参数
    wx.setNavigationBarTitle({
      title: this.data.query.title,
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    console.log("xzzzz")
    this.data.param={
      _page:1,
      _limit:10
    },
    this.data.total = 0
    this.data.isloading = false
    this.data.shopList=[]
    // 重新发起请求
    this.getShopList();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
     // 判断是否还有下一页数据
  if (this.data.param._page * this.data.param._limit >= this.data.total) {
    return wx.showToast({
      title: '数据加载完毕!',
    })
  }
    if(this.data.isLoading)return
    console.log("上拉刷新")
    this.data.param._page++;
    this.getShopList();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})

标签:https,api,微信,案例,base,本地,net,data,itheima
From: https://www.cnblogs.com/sy2022/p/18136471

相关文章

  • 案例二十一备份30天之前的日志并压缩到指定目录下
    #!/bin/bash#备份目录info_backdir=/backup/log/info/`date-d"30dayago"+%F|awk-F"-"'{print$1"-"$2}'`error_backdir=/backup/log/error/`date-d"30dayago"+%F|awk-F"-"'{print$1"......
  • 小程序处理微信设置关闭位置权限进行提示
    1.如果在设置中设置微信位置权限为不允许在uni.getLocationapi中会固定返回false但是此时提示的是小程序位置权限,问题在于小程序位置权限是开启的,因此此处是需要区分是微信无位置权限还是小程序无位置权限,如果是微信无权限,应该要提示用户,并引导用户进行位置权限的开启(不然存......
  • flask 实现简易视频播放网站案例
    flask实现简易视频播放网站案例本视频主要实现两个目的,上传视频、播放视频。使用技术:flask、flask-sqlalchemy、layui视频地址:https://www.bilibili.com/video/BV1QV411N7qy/搭建项目直接新建一个flask项目,然后下载layui的静态文件丢到static目录下。然后再编写视频......
  • 关于mac使用figma以及企业微信3.1.18版本,CPU系统占用率飙升至70%
    问题描述使用一段时间正常,不知道是修改了什么设置,还是有什么软件冲突,导致cpu使用率极高系统进程中有一个kernel_task占用了大量的cpu并且该占用并不会消失,只要figma打开就会一直占用企业微信3.1.18也会导致该问题=>企业微信3.1.16之后版本总是会启用独立显卡,导致电......
  • 本地使用ts配置
    1.需要安装的依赖"dependencies":{"html-webpack-plugin":"^5.5.0","ts-loader":"^9.2.6","ts-node":"^10.4.0","tslib":"^2.3.1","typescript&q......
  • 黑盒测试用例设计技术-语法测试原则及案例
    语法测试用例设计原则选项导出原则:当语法规则强制选择时,为该选择的每个备选方案导出一个测试用例(“选项”)。最小与最大重复次数原则:当语法规则强制执行最小重复次数时,应为此导出至少两个测试用例:一个满足最小重复次数,另一个不满足(小于最小重复次数)。当语法规则允许最大重复......
  • LlamaIndex 起步教程(本地模型)
     提示:确保您已先按照自定义安装步骤操作。这是一个著名的“五行代码”起步示例,使用本地LLM(大语言模型)和嵌入模型。我们将使用BAAI/bge-small-en-v1.5作为嵌入模型,通过Ollama服务的Mistral-7B作为LLM。下载数据本示例使用PaulGraham的文章《WhatIWorkedOn》文本......
  • 【编程】C++ 常用容器以及一些应用案例
    介绍一些我常用的C++容器和使用方法,以及使用案例。blog1概述容器(Container)是一个存储其他对象集合的持有者对象。容器以类模板实现,对支持的元素类型有很大的灵活性。容器管理元素的存储并提供多个成员函数来访问和操作元素。两个主要类别:序列容器(Sequencecontainer):将元素维......
  • 本地升级idea后,不能向github上提交代码问题处理
    问题现象:本人自己电脑之前一直使用idea2018.1商业破解版,之前有简历本地代码仓库,并在github上建立了关联的远程代码仓库。最近本人在本地升级一下idea,从idea2018.1商业版升级到2023.1.5社区版本(idea支持win7的版本基本就到2023.1这个版本了,目前本人尝试安装了2023.1.5和2023.1.3......
  • 微信小程序 Table
    <viewclass="pubOtherInfoTable"><viewclass="pubOtherInfoTrbg-header"><viewclass="pubOtherInfoTh">日期</view><viewclass="pubOtherInfoTh">里程</view>......