如何实现页面之间的导航跳转
-
声明式导航、编程式导航
如何实现下来刷新效果
-
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)
方法跳转页面时,也可以携带参数。
在 onl oad 中接收导航参数
通过声明式导航传参或编程式导航传参所携带的参数,可以直接在 onLoad
事件中直接获取到
onLoad: function(option){
// option 就是导航传递过来的参数对象
}
页面事件
下拉刷新
enablePullDownRefresh
设置为 true
-
全局开启下拉刷新
-
局部开启下拉刷新
监听下拉刷新事件
onPullDownRefresh()
停止下拉刷新效果
wx.stopPullDownPrefresh()
上拉触底
监听上拉触底事件
onReachBottom()
配置上拉触底距离
在全局或页面的.json
配置文件,配置onReachBottomDistance
属性,修改值。
生命周期
声明周期的分类
-
应用生命周期
小程序从启动 → 运行 → 销毁的过程
app.js
→app({})
-
页面生命周期
小程序中每个页面的加载 → 渲染 → 销毁的过程
Page({})
WXS 脚本
wxs 的应用场景
wxml
中无法调用在页面的 .js
中定义的函数,但是,wxml
中可以调用 wxs
中定义的函数。因此,小程序中 wxs
的典型应用场景就是“过滤器”。
wxs 和 JavaScript的关系
-
wxs 有自己的数据类型
-
number 数值类型、string 字符串类型、boolean 布尔类型、object 对象类型、function 函数类型、array 数组类型、date 类型、regexp 正则
-
-
wxs 不支持类似于 ES6 及以上的语法形式
-
不支持:let、const、解构赋值、展开运算符、箭头函数、对象属性简写
-
支持:var 定义变量、普通 function 函数等类似于 ES5 的语法
-
-
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 的特点
-
与 JavaScript 不同
-
不能作为组件的事件回调
-
隔离性
-
不能调用 js 中定义的函数
-
不能调用小程序提供的 API
-
-
性能好
-
在 iOS 设备上,小程序内的 wxs 会比 JavaScript 代码快 2~20 倍
-
在 android 设备上,二者的运行效率无差异
-