微信小程序快速入门【02】

1.下拉刷新和上拉触底

配置:

复制代码
  全局配置:应用于所有页面
复制代码
  页面局部配置:应用于当前页面
复制代码
  开启/关闭下拉刷新:"enablePullDownRefresh":true/false(默认关闭)
复制代码
  上拉触底:默认开启
复制代码
  设置上拉触底阈值:"onReachBottomDistance":数值(默认为50px)

案例演示:

1.准备测试页面colors:
plain 复制代码
 "pages": [
    "pages/conact/conact",
    "pages/home/home",
    "pages/test/test",
    "pages/colors/colors",
    "pages/detail/detail",
    "pages/message/message",
    "pages/index/index",
    "pages/logs/logs"
  ],  
2.准备数据和函数:
plain 复制代码
data: {
     colorList:[]
  },
getColor(){
    for(let i=0;i<20;i++){
      let colorStr=`${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)},${Math.random()}`;
      this.setData({
        colorList:[...this.data.colorList,colorStr]
      })
    }
    
  },

上述内容表示准备一个数组,然后通过for循环将20条数据添加到数组中;每一天数据包含四个部分,前三部分为0-255之间的随机整数,最后一部分为0-1之间的随机数,此数据用于模拟rgba颜色,用于页面渲染;

3.开启下拉刷新
plain 复制代码
{
  "usingComponents": {},
  "enablePullDownRefresh":true
  }
4.在页面加载函数中调用上面定义的函数
plain 复制代码
 onLoad(options) {
    this.getColor();
  }, 
5.编辑页面模板,准备渲染内容
plain 复制代码
 <view wx:for="{{colorList}}" wx:key="index" 
style="height: 300rpx; line-height: 300rpx; text-align: center; color: white; background-color: rgba({{item}});">
{{item}}
 </view>

上述代码表示在容器中遍历颜色数组,并设置了相关样式,并通过js中准备的数据设置了背景颜色;

6.编译项目,查看页面渲染情况
7.在下拉刷新函数中定义业务逻辑,实现下拉刷新时页面渲染情况同时刷新
plain 复制代码
/**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
     console.log('执行了下拉刷新');
     //清空颜色数组
     this.setData({
       colorList:[]
     }),
     //重新填充颜色
     this.getColor(),
     //停止刷新动画
     wx.stopPullDownRefresh()
  },  
8.测试上拉刷新

可以发现当用户下拉刷新时,下拉刷新函数执行,同时页面渲染也发生了改变

9.上拉触底函数编辑业务,实现加载更多
plain 复制代码
onReachBottom() {
    console.log('执行了上拉触底');
    this.getColor()
  },
10.测试上拉触底

可以发现当用户一直往下滑,当距离底部50px(默认值)时,触发上拉触底函数,数组中又在此填充20条数据;

注意事项:此时如果用户滑动过快,瞬间超过了50px的阈值,此时上拉触底就会失效;

11.设置上拉触底阈值,避免上拉属性失效
plain 复制代码
{
  "usingComponents": {},
  "enablePullDownRefresh":true,
  "onReachBottomDistance":200
  }

此时将上拉触底的阈值设置为200,此时就会在200px时提前执行上拉触底函数,避免用户滑动过快,造成上拉触底失效;

2.生命周期函数

1.小程序的生命周期函数:

说明:

onLaunch():
复制代码
  程序启动时执行,只执行一次;
onShow():
复制代码
  程序启动或从后台切到前台时执行;
onHide():
复制代码
  程序从前台进入后台时执行

案例:

1.app.js中定义生命周期函数
plain 复制代码
App({
  onLaunch() {
    console.log('app.js程序启动时执行onLaunch,只执行一次');
  },
  onShow(){
   console.log('app.js程序启动或从后台切到前台时执行onShow');
  },
  onHide(){
    console.log('app.js程序从前台进入后台时执行onHide');
  }
})  
2.编译项目进行测试:

此时可以发现onLaunch()和onShow()函数执行了

此时通过模拟器模拟进入后台,发现onHide()函数执行了

复制代码
当重新进入前台时,onShow()函数再次执行,而onLoad()函数没有执行,因为onLoad()函数只在程序启动时执行一次;

2.页面生命周期函数;

函数说明:

onLoad():
复制代码
  当前页面加载时执行,只执行一次;
onReady():
复制代码
 当前页面渲染完成时执行;
onShow():
复制代码
 进入当前页面时执行;
onHide():
复制代码
 离开(隐藏)当前页面时执行,只针对于tabBar页面,非tabBar页面离开时会卸载当前页;
onUnload():

卸载当前页面时执行,只针对于非tabBar页面,tabBar页面只会显示或隐藏,而不会被卸载;

案例:

在colors页面定义页面生命周期函数
plain 复制代码
/**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('colors页面加载时执行onLoad,只执行一次');
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    console.log('colors页面渲染完成时执行onReady');
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    console.log('进入colors页面时执行onShow');
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    //(如果是非tabBar页面,离开此页面时,当前页面会被卸载执行卸载回调函数)
    console.log('离开colors页面时(当前页面被隐藏)执行onHide');
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    console.log('colors页面卸载时执行onUnload');
  },
  
编译项目,进行测试:

进入colors页面:onShow()和onReady()函数执行;

复制代码
返回主页时,onUnload()函数执行,因为colors页面属于非tabBar页面,离开时该页面会被卸载(如果是tabBar页面,则会执行onHide()函数);

3.本地缓存

案例演示:

1.在主页定义一个按钮,并绑定触摸事件;
plain 复制代码
<!-- 本地缓存 -->
<button type="primary" bind:tap="setStorage">本地缓存</button>   
2.定义回调函数
plain 复制代码
setStorage(){
}
3.本地缓存演示:
1.同步版本:
代码编写;
plain 复制代码
 setStorage(){
  //同步缓存
     //存
     wx.setStorageSync('name', '测试数据a')
     //取
     let name=wx.getStorageSync('name')
     console.log(name);
     //删
     wx.removeStorageSync('name')
     console.log(wx.getStorageSync('name'));
     //清空
    //  wx.clearStorageSync();
}    
测试:
复制代码
  1.触摸按钮,触发事件的回调函数

       ![](https://cdn.nlark.com/yuque/0/2024/png/45532635/1733808708318-ea7db0e5-6021-475f-91f9-18e97aaa53ee.png)

  2.查看控制台的结果展示:

发现可以正常存取或删除数据(第二次读取为空是因为上面执行了删除操作)

2.异步版本:

说明:异步版本与同步版本的区别在于异步缓存在执行存,取,删,清空等操作时都有其对应的成功,失败,一定执行的回调函数;

代码编写:
plain 复制代码
setStorage(){
       wx.setStorage({
         key:'name',
         data:'zs',
         success:()=>{
           console.log('数据存储成功');
         },
          fail:()=>{
            console.log('数据存储失败');
          },
          complete:()=>{
            console.log('资源释放');
          }
       }),
       //删除
       wx.removeStorage({
         key: 'name',
         success:()=>{
          console.log('数据删除成功');
        },
         fail:()=>{
           console.log('数据删除失败');
         },
         complete:()=>{
           console.log('资源释放');
         }
       })
       //取
       wx.getStorage({
         key:'name',
         success:(res)=>{
          console.log('数据读取成功',res.data);
        },
         fail:()=>{
           console.log('数据读取失败');
         },
         complete:()=>{
           console.log('资源释放');
         }
       })
       //清除(一般不写回调函数)
       wx.clearStorage({
        success:()=>{
          console.log('数据清除成功');
        },
         fail:()=>{
           console.log('数据清除失败');
         },
         complete:()=>{
           console.log('资源释放');
         }
       })
}
测试:

1.触摸按钮,触发事件的回调函数

2.观察控制台结果展示

可以发现数据可以正常存取或删除清空

4.wxs标签:

概述:

复制代码
wxs是微信小程序独有的一种脚本语言,可实现在wxml页面嵌入类似于js语法的内容,主要应用场景为设置过滤器;

特点:

复制代码
   wxs有自己的数据类型:number/string/boolean/object/function/array/date/regexp
复制代码
   wxs 不支持 ES6语法:不能写let  const 解构解析、展开运算符、箭头函数、对象属性简写。
复制代码
   wxs与js相互隔离,不可调用

优点:

复制代码
 在ios系统中wxs比js执行效率高2-20倍;

使用案例:

1.内联式使用:

在conant.wxml页面定义wxs标签:

相关推荐
Q_Q5110082857 小时前
python+uniapp基于微信小程序的心理咨询信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
HuYi_code8 小时前
WeChat 小程序下载文件实现
微信小程序·uni-app
00后程序员张9 小时前
HTTPS 包 抓取与分析实战,从抓包到解密、故障定位与真机取证
网络协议·http·ios·小程序·https·uni-app·iphone
一匹电信狗9 小时前
【C++】C++风格的类型转换
服务器·开发语言·c++·leetcode·小程序·stl·visual studio
2501_915921439 小时前
iOS混淆与IPA加固实战手记,如何构建苹果应用防反编译体系
android·macos·ios·小程序·uni-app·cocoa·iphone
Q_Q51100828512 小时前
python+uniapp基于微信小程序的学院设备报修系统
spring boot·python·微信小程序·django·flask·uni-app
李慕婉学姐12 小时前
【开题答辩过程】以《自习室预约微信小程序》为例,不会开题答辩的可以进来看看
微信小程序·小程序
LB211212 小时前
苍穹外卖-购物车 前端修改(小程序主页与购物车模块显示不一致)
小程序
peachSoda712 小时前
自定义配置小程序tabbar逻辑思路
javascript·vue.js·微信小程序·小程序
ღ᭄ꦿ࿐Never say never꧂14 小时前
微信小程序 Button 组件 open-type 完全指南:从用户信息获取到客服分享的实战应用
spring boot·微信小程序·小程序·uni-app·vue3