小程序页面导航、事件和 wxs 脚本

如何实现页面之间的导航跳转

  • 声明式导航、编程式导航

如何实现下来刷新效果

  • enablePullDownRefresh、onPullDownRefresh

如何实现上拉加载更多效果

  • onReachBottomDistance、onReachBottom

小程序中常用的生命周期函数

  • 应用生命周期函数:onLaunch、onShow、onHide

  • 页面生命周期函数:onLoad、onShow、onReady、onHide、onUnload

 

页面导航

声明式导航

  • 在页面上声明一个 <navigator> 导航组件

  • 通过点击 <navigator> 组件实现页面跳转

  • 导航到 tabBar 页面

    • 使用 <navigator> 组件跳转到指定的 tabBar 页面时,需要指定 url 属性和 open-type 属性

      • url 表示要跳转的页面的地址,必须以 / 开头

      • open-type 表示跳转的方式,必须为 switchTab

         <navigator url="/pages/message/message" open-type="switchTab">导航到消息页面</navigator>
  • 导航到 非tabBar 页面

    • url 表示要跳转的页面的地址,必须以 / 开头

    • open-type 表示跳转的方式,必须为 navigate (可以省略不写)

      <navigator url="/pages/info/info" open-type="navigate">导航到info页面</navigator>
  • 后退导航

    • 如果要退到上一页面或多级页面,则需要指定 open-type 属性和 delta 属性

    • open-type 的值必须是 navigateBack,表示要进行后退导航

    • delta 的值必须是数字,表示的是后退的层级(默认值为1,可以省略不写)

      <navigator open-type="navigateBack" delta="1">返回上一页</navigator>

编程式导航

  • 调用小程序的导航 API,实现页面的跳转

  • 导航到 tabBar 页面

    • 调用 wx.switchTab(object object)方法,可以跳转到 tabBar 页面。

      • object 的参数对象

        • url,必填, 需要跳转的 tabBar 页面的路径,路径后不能带参数

        • success 接口调用成功的回调函数

        • fail 接口调用失败的回调函数

        • complete 接口调用结束的回调函数(调用成功、失败都会执行)

  • 导航到 非tabBar 页面

    • 调用 wx.navigateTo(object object)方法,可以跳转到 tabBar 页面。(具体使用类似 wx.switchTab

  • 后退导航

    • wx.navigateBack()

 

导航传参

声明式导航传参

navigator 组件的 url 属性用来指定将要跳转到的页面路径。同时,路径的后面还可以携带参数。

  • 参数与路径之间使用 分隔

  • 参数键与参数值用 = 相连

  • 不同参数用 & 分隔

    <vavigator url="/pages/info/info?name=zs&age=20">跳转到info页面</vavigator>

 

编程式导航传参

调用 wx.navigateTo(object object) 方法跳转页面时,也可以携带参数。

 

在 onLoad 中接收导航参数

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

onLoad: function(option){
    // option 就是导航传递过来的参数对象
}

 

页面事件

下拉刷新

enablePullDownRefresh设置为 true

  1. 全局开启下拉刷新

  2. 局部开启下拉刷新

 

监听下拉刷新事件

onPullDownRefresh()

 

停止下拉刷新效果

wx.stopPullDownPrefresh()

 

上拉触底

监听上拉触底事件

onReachBottom()

 

配置上拉触底距离

在全局或页面的.json配置文件,配置onReachBottomDistance属性,修改值。

 

生命周期

声明周期的分类

  1. 应用生命周期

    小程序从启动 → 运行 → 销毁的过程

    app.jsapp({})

  2. 页面生命周期

    小程序中每个页面的加载 → 渲染 → 销毁的过程

    Page({})

 

WXS 脚本

wxs 的应用场景

wxml 中无法调用在页面的 .js 中定义的函数,但是,wxml 中可以调用 wxs 中定义的函数。因此,小程序中 wxs 的典型应用场景就是“过滤器”。

 

wxs 和 JavaScript的关系

  1. wxs 有自己的数据类型

    • number 数值类型、string 字符串类型、boolean 布尔类型、object 对象类型、function 函数类型、array 数组类型、date 类型、regexp 正则

  2. wxs 不支持类似于 ES6 及以上的语法形式

    • 不支持:let、const、解构赋值、展开运算符、箭头函数、对象属性简写

    • 支持:var 定义变量、普通 function 函数等类似于 ES5 的语法

  3. wxs 遵循 CommonJS 规范

    • module 对象

    • require() 函数

    • module.exports 对象

 

内嵌 wxs 脚本

wxs 代码可以编写在 wxml 文件中的 <wxs> 标签内。

wxml 文件中的每个 <wxs></wxs> 标签,必须提供 module 属性,用来指定当前 wxs 的模块名称,方便在 wxml 在访问模块中的成员。

<view>{{ m1.toUpper(username) }}</view>
<wxs module="m1">
    // 将文本转为大写形式 zs → ZS
    module.exports.toUpper = function(str){
        return str.toUpperCase();
    }
</wxs> 

 

定义外联的 wxs 脚本

.wxs为后缀名的文件

function toUpper(str){
    return str.toUpperCase();
}
​
module.exports = {
    toUpper: toUpper
}

 

使用外联的wxs 脚本

在 wxml 中引入外联的 wxs 脚本时,必须为 <wxs> 标签添加 module 和 src 属性。

  • module 用来指定模块的名称

  • src 用来指定要引入的脚本的路径,且必须是相对路径

<view>{{ m1.toUpper(username) }}</view>
// 引用外联的 tools.wxs 脚本,并命名为 m2
<wxs src="../../utils/tools.wxs" module="m2"></wxs>

 

wxs 的特点

  1. 与 JavaScript 不同

  2. 不能作为组件的事件回调

  3. 隔离性

    1. 不能调用 js 中定义的函数

    2. 不能调用小程序提供的 API

  4. 性能好

    1. 在 iOS 设备上,小程序内的 wxs 会比 JavaScript 代码快 2~20 倍

    2. 在 android 设备上,二者的运行效率无差异

posted @ 2022-12-11 18:20  东八区  阅读(68)  评论(0编辑  收藏  举报