微信小程序学习第5天——页面导航(声明式与编程式导航)与页面事件(上拉与下拉刷新)

一、页面导航

1、导航方式

小程序的2种页面导航方式:①声明式导航编程式导航

区别声明式导航编程式导航
跳转方式点击 <navigator>组件实现页面跳转调用小程序的导航API实现页面跳转
导航到tabBar页面指定url和open-type属性值为switchTabopten-type属性可以省略调用wx.switchTab()方法
导航到非tabBar页面指定url属性和open-type属性值为navigate调用 wx.navigateTo() 方法
后退导航指定open-type属性值为navigateBackdelta属性的值必须为数字调用 wx.navigateBack() 方法

编程式导航wx.switchTab(object)wx.navigateTo(object)方法中Object参数对象的属性列表

属性类型是否必选说明
urlstring跳转路径,可带参数
successfunction调用成功的回调
failfunction调用失败的回调
completefunction不论成功是否哦都会执行

注意点:声明式导航在后退到上一页时,可以省略delta属性,因为其默认值是1

2、导航传参

不论声明式导航还是编程式导航都可以传参
① 参数与路径之间使用 ? 分隔 ② 参数键与参数值用 = 相连 ③ 不同参数用 & 分隔

<navigator url="/pages/detail/detail?id=1&name=zs"></navigator>

3、接收参数

通过声明式导航传参或编程式导航传参所携带的参数,可以直接在 onLoad 事件中直接获取到

onLoad:function(options) {
	console.log(options)
}

4、案例

// .wxml
<view class="container">
<!-- 跳转到tabBar -->
<button bindtap="btnHome">编程式导航跳转到首页</button>
<navigator url="/pages/home/home" open-type="switchTab">声明式导航跳转到首页</navigator>
<!-- 跳转到非tabBar -->
<button bindtap="btnDetail">编程式导航跳转到详情页</button>
<navigator url="/pages/detail/detail">声明式导航跳转到详情页</navigator>
<!-- 带参数 -->
<navigator url="/pages/detail/detail?name=zs">带参数跳转</navigator>
</view>

// .js
Page({
  data: {
    querys:{}
  },
  btnHome(){
    wx.switchTab({
      url: '/pages/home/home'
    })
  },
  btnDetail(){
    wx.navigateTo({
      url: '/pages/detail/detail',
    })
  },

// .js(接收参数的组件)
  onLoad(options) {
    console.log(options)
  },
})

二、页面事件

全局开启刷新:在 app.json 的 window 节点中;局部开启刷新:在页面的 .json 配置文件中
在实际开发中,一般推荐使用局部下拉刷新

1、下拉刷新

《1》开启下拉刷新:enablePullDownRefresh属性

enablePullDownRefresh: true;

《2》停止下拉刷新:调用 wx.stopPullDownRefresh()方法

《3》监听下拉刷新事件:onPullDownRefresh() 函数

《4》配置下拉刷新的样式
窗口的背景颜色:设置backgroundColor属性

backgroundColor : #000;

下拉刷新 loading 的样式:设置backgroundTextStyle属性

 backgroundTextStyle:dark / light;

2、上拉触底

《1》监听上拉触底事件: onReachBottom() 函数

《2》页面上拉触底距离
在页面的.json配置文件中,通过 onReachBottomDistance 属性来配置上拉触底的距离,默认的触底距离是 50px

3、显示Loading提示框

《1》开启:调用wx.showLoading()方法

 wx.showLoading({
    title: '数据加载中',  // 提示的内容
  })

《2》关闭:调用 wx.hideLoading()方法

三、案例练习

需求:上拉触底(根据接口生成随机背景颜色,添加loading提示效果,对上拉触底进行节流处理)

在这里插入图片描述
.WXML代码

<view class="container">
  <view wx:for="{{arrList}}" wx:key="id" style="background-color:rgba({{item}});">
  <text>{{item}}</text>
</view>
</view>

.WXSS代码

.container {
  text-align: center;
  padding: 0;
}
.container view {
  width: 100%;
  margin-bottom: 20rpx;
  height: 200rpx;
  line-height: 200rpx;
}

.JS代码

Page({
  data: {
    arrList:[],
    isloading:false, // 定义节流阀
  },

  // 封装一个获取随机颜色的函数
  getColor(){
  	// 开启节流阀
    this.setData({
      isloading:true
    })
    wx.showLoading({
      title: '数据加载中',
    })
    wx.request({
      url: 'https://www.escook.cn/api/color',
      method:'GET',
      success:(res)=>{
        this.setData({
          arrList:[...this.data.arrList,...res.data.data]
        })
      },
      complete:()=>{
        wx.hideLoading();
        // 关闭节流阀
        this.setData({
          isloading:false
        })
      }
    })
  },

  onLoad(options) {
    this.getColor()
  },
   // 页面上拉触底事件的处理函数
  onReachBottom() {
  		// 判断节流阀状态
      if(this.data.isloading) return;
      this.getColor();
  }
})
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值